C语言无符号整型unsigned int赋值20万就异常,求助!到底int最多能赋值多少?

int main(){ const unsigned int arrSize = 200000; const unsigned int nStart = 10000; const unsigned int nEnd = 99900; cout << sizeof(unsigned int) << endl; //malloc() int a[arrSize] = { 0 };……}如上所示,一运行就挂掉!显示异常 stack-overflow!我觉得这不可能,因为下面cout输出是4字节(我是64位电脑),我主要想赋值一个数组的大小空间为20万(100万或更多),请问这是怎么回事呢?(10万就正常)
2026年09月23日 10:17
有1个网友回答
网友(1):

不是int存不下

而是你的栈空间不足

20万 就是200000*4=800000 

需要800K左右的内存。 明显栈溢出了

修改方法也很简单

要么 用new动态分配

要么 定义成全局变量

比如

const unsigned int arrSize = 200000;
const unsigned int nStart = 10000;
const unsigned int nEnd = 99900;
int a[arrSize];
int main()
{

cout << sizeof(unsigned int) << endl;
//malloc()

……
}