我正在编写一个使用大量递归函数的C程序.我还使用动态列表来存储一些数据,同时递归.我实现了Push功能将数据推送到列表中.
几次调用推送功能"> 17,000次"后,我收到以下错误:
Prob中0x77963c47处的未处理异常 - Cap CE.exe:0xC00000FD:堆栈溢出.
在return HeapAlloc(_crtheap, 0, size ? size : 1);那里从stack->listNode = malloc(sizeof(struct Node));Push函数调用.
我打开任务管理器,发现我还有很多可用内存.所以我猜这不是内存泄漏问题.
我可以添加到列表中的数量是多少,或者我可以调用多少次函数?
为进程分配的堆栈大小是固定的.因此,即使系统有足够的内存,您也可以溢出堆栈.
更重要的是,你的过程本身通常有足够的内存.它只是堆栈非常小.
| 归档时间: |
|
| 查看次数: |
200 次 |
| 最近记录: |