多次使用new,导致 Stack Overflow怎么办

来源:百度知道 编辑:UC知道 时间:2024/06/25 01:54:28
由于计算需要大量数组,使用new多次后,系统提示0xC00000FD: Stack Overflow,无法继续分配空间
怎么解决?

这是你的程序的问题,new是不会申请stack内存的,可能是你的程序什么地方进入了死循环导致某个变量被不断的在堆栈上创建。

检查程序算法是否存在问题,空间是可以复用的,可以直接从堆中分配空间,不要重复new。一般情况可以申请两至三个的数组空间重复使用。假设中间产生大量的过程结果可以直接存进文件中。

每用一次new操作符,就会在堆上分配一个变量的内存空间。
假设用一个指针pValue在该变量用完后,请立即用 delete pValue;或delete[] pValue;(删除数组)释放该内存空间。
这样就不会是堆溢出或内存泄漏。

首先说明new是在堆上分配内存,不会导致栈溢出

检查是否有出现无限递归的情况

可能是单个new的大小太大了,多个来的话不会Overflow的吧

需要先了解你进程是否一次必须分配如此大的内存空间,是不是可以考虑新分配大量空间前,可以使用delete 以释放前面的空间;必须清楚好的应用程序的设计不应该占用太多的内存空间,如果迫于不得已,可以考虑使用将数据保存到文件中来中转。