发布网友 发布时间:2022-03-01 07:39
共1个回答
热心网友 时间:2022-03-01 09:08
栈的大小可以由连接器选项来控制,比如vc环境下的/stack选项,在代码里可以用#pragma comment(linker,"/stack:x")来设定,默认的设定是1MB
当声明一个局部int a[1000000];时,由于C++中声明时就要为变量分配足够的内存(不像java声明的时候只是引用),而这个局部变量又是放在栈上的,超过栈的大小就会引发一个异常,这个异常表明栈溢出。
编译的时候,编译器通过一个叫做“栈检查函数”的函数来检查,这个函数确保代码不会访问。