chkstk.asm堆栈溢出的一种解决方案

来源:互联网 发布:windows ftp客户端 编辑:程序博客网 时间:2024/06/05 18:49

程序类型:C++
纯粹mark一下自己犯过的错误。
写程序的时候,出现chkstk.asm堆栈溢出,提示stack overflow。
生成成功,开始执行不调试时会直接显示已经停止工作,断点调试会出现错误提示,要求中断,跳转到chkstk.asm文件第99行。
上网查找,大概是栈溢出的问题,在程序里面使用了一个float a[100000][2000]的数组,太大了,所以会有栈溢出的问题。
解决方案,一个是在设置里面增大堆栈空间,一个是使用new来新建。
尝试的是第二种也就是使用new,然后成功了。
解决方案:

#include <iostream>using namespace std;int main(){    int i,j;//用于输入当然循环变量    float **a;//指针    a=new float *[100000];    for (i=0;i<100000;i++)    {        a[i]=new float *[2000];    }    //......之后就是输入什么的了    delete[]a;}

里面比较需要注意的是不要溢出,我后来因为new的比用的要少,导致在后面调试的时候出现std::bad_alloc错误,之后把用到的和new的数目对上了就可以了。

原创粉丝点击