由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 请问如何对付error C2148问题:陣列的總大小不能超過 0x7fffffff 位元組
相关主题
C++里面如何new一个很大的数组啊A C++ compiler related interview question
A question about class size两个面世题
指针的大小是 4 byte还是有赖于系统?C++ Q 108: swap
MATLAB编译的dll怎么被C#调用呢python question, easy one
C puzzle 一日一题老魏老姜老霸,我出银子给你们开机器
scala最烦人的是build太不容易了java里run curl system command的问题
Java如何实现自动消失的消息框? (转载)*** help needed! on MATLAB GUI ***
C arrayHow to tell gcc stop compiling.
相关话题的讨论汇总
话题: c2148话题: 0x7fffffff话题: 陣列话题: 位元话题: 应用程序
进入Programming版参与讨论
1 (共1页)
g***t
发帖数: 1279
1
在线等!多谢各位!
k****f
发帖数: 3794
2
vc?

【在 g***t 的大作中提到】
: 在线等!多谢各位!
g***t
发帖数: 1279
3
是啊。
k****f
发帖数: 3794
4
7fff ffff已经2g了,你要这么大空间?

【在 g***t 的大作中提到】
: 在线等!多谢各位!
g***t
发帖数: 1279
5
多谢了。
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 的大作中提到】
: 多谢了。
1 (共1页)
进入Programming版参与讨论
相关主题
How to tell gcc stop compiling.C puzzle 一日一题
inheritence problemscala最烦人的是build太不容易了
A tech question (转载)Java如何实现自动消失的消息框? (转载)
An interesting C++ compile errorC array
C++里面如何new一个很大的数组啊A C++ compiler related interview question
A question about class size两个面世题
指针的大小是 4 byte还是有赖于系统?C++ Q 108: swap
MATLAB编译的dll怎么被C#调用呢python question, easy one
相关话题的讨论汇总
话题: c2148话题: 0x7fffffff话题: 陣列话题: 位元话题: 应用程序