堆栈溢出(Stack Overflow)的解决方法

堆栈溢出(Stack Overflow)的解决方法堆栈溢出是程序调试中 比较麻烦的一种错误 但不外乎就是递归和变量申请大空间内存 错误时 弹出如下图所示框框 其中 0x7c934ffd 的值依具体情况而不同

大家好,欢迎来到IT知识分享网。

堆栈溢出是程序调试中,比较麻烦的一种错误,但不外乎就是递归和变量申请大空间内存;

错误时,弹出如下图所示框框:

堆栈溢出(Stack Overflow)的解决方法

其中,0x7c934ffd的值依具体情况而不同。OxC00000FD是错误标号;

 

1. 局部数组变量空间太大,如下:

int main(int argc, char* argv[])
{

    char stack_overflow[1024*1024*5];
    stack_overflow[0] = 1;
    return 0;
}

解决这类问题的办法有两个,一是增大栈空间(后文中有详细描述),二是改用动态分配,使用堆(heap)而不是栈(stack)。   堆栈溢出(Stack Overflow)的解决方法

1.  打开此项目的“属性页”对话框。有关详细信息,请参见设置 Visual C++ 项目属性。

2.  单击“链接器”文件夹。

3.  单击“系统”属性页。

4.  修改下列任一属性:

·         堆栈提交大小

·         堆栈保留大小

 

(或则 在命令行输入 附加项 /STACK:大小)

2. 函数出现无限递归调用,如下:

void infinite_loop()
{

    infinite_loop();
}

int main(int argc, char* argv[])
{

    infinite_loop();
    return 0;
}

实际应用中,往往由于粗心大意或者函数间的相互调用而造成了这样的结果。解决的办法当然是找到使用递归的地方,并消除
BUG
 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/151749.html

(0)
上一篇 2025-03-11 22:10
下一篇 2025-03-11 22:15

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信