g***t 发帖数: 1279 | | k****f 发帖数: 3794 | 2 vc?
【在 g***t 的大作中提到】 : 在线等!多谢各位!
| g***t 发帖数: 1279 | | k****f 发帖数: 3794 | 4 7fff ffff已经2g了,你要这么大空间?
【在 g***t 的大作中提到】 : 在线等!多谢各位!
| g***t 发帖数: 1279 | | v*****x 发帖数: 8 | 6 参见MSDN对C2148的解释:
char MyArray[0x7ffffffff]; // C2148
理由如下:
32位的WINDOWS系统的理论寻址空间是2的32次方, 即4G Bytes.
可惜的是,WINDOWS系统在缺省状态下, 将高位的2G Bytes保留为系统空间. 亦即, 从0
到0x7FFFFFFF是应用程序可以使用的, 而从0x80000000到0xFFFFFFFF是系统使用的.
比如说, 你的应用程序中有一段code:
MyApp::OnUserInput(const char * input) {
if (strcmp(input, "blahblah") == 0) {
MessageBox(...);
}
}
这个MessageBox的Function Body就在高位2GB之中.
如是, Compiler抱错实际上是在你的程序运行之前帮你做了一次安全检查.
事实上, 在一般情况下, 应用程序的实际可用的连续空间是不可能有2GB的. 首先, 你
的应用程序本身需要占用空间, 比如说 100K text, 100K data ... 而且
【在 g***t 的大作中提到】 : 多谢了。
|
|