堆栈溢出是程序调试中,比较麻烦的一种错误,但不外乎就是递归和变量申请大空间内存;
错误时,弹出如下图所示框框:
其中,0x7c934ffd的值依具体情况而不同。OxC00000FD是错误标号;
1. 局部数组变量空间太大,如下:
int main(int argc, char* argv[])
{
char stack_overflow[1024*1024*5];
stack_overflow[0] = 1;
return 0;
}
解决这类问题的办法有两个,一是增大栈空间(后文中有详细描述),二是改用动态分配,使用堆(heap)而不是栈(stack)。
1. 打开此项目的“属性页”对话框。有关详细信息,请参见设置 Visual C++ 项目属性。
2. 单击“链接器”文件夹。
3. 单击“系统”属性页。
4. 修改下列任一属性:
· 堆栈提交大小
· 堆栈保留大小
(或则 在命令行输入 附加项 /STACK:大小)
2. 函数出现无限递归调用,如下:
void infinite_loop()
{
infinite_loop();
}
int main(int argc, char* argv[])
{
infinite_loop();
return 0;
}