小编xen*_*vil的帖子

C函数调用中的堆栈溢出-MS Visual C ++ 2010 Express

我已经用C语言编写了一个函数,调用该函数会立即导致堆栈溢出。

原型: void dumpOutput( Settings *, char **, FILE * );

致电专线: dumpOutput( stSettings, sInput, fpOut );

在调用它时,stSettings已经是Settings结构的指针,sInput是动态分配的2D数组,并且fpOutFILE *。它一直到达呼叫线路,没有任何错误,没有内存泄漏等。

实际的功能相当冗长,我认为在这里不值得分享它,因为溢出是在代码进入功能时发生的(我认为称为序言部分)

我尝试直接从main()虚拟变量调用相同的函数,以检查传递的参数是否存在任何问题,但仍会引发堆栈溢出情况。

该错误是由chkstk.asm调用函数时引起的。这个asm文件(根据其中的注释)尝试探测堆栈以检查/分配被调用函数的内存。它只是一直跳到Find next lower page and probe部分,直到发生堆栈溢出为止。

其中的局部变量dumpOutput也不是内存野兽,只有6个整数和2个指针。

进入此功能时,代码使用的内存为60,936K,到堆栈溢出时,内存增加到61,940K。大部分的记忆都进入了sInput。这是错误的原因吗?我不这么认为,因为仅传递了它的指针。其次,我不明白为什么dumpOutput要尝试在堆栈上分配1004K内存?

我在这里完全茫然。任何帮助将不胜感激。

提前致谢。

stack-overflow function overflow visual-studio-2010

5
推荐指数
1
解决办法
2103
查看次数