HeapAlloc返回0xC0000017:没有足够的配额

时间:2010-01-22 03:07:35

标签: heap quota heapalloc

我正在分配少量数据类型,总大小为2mb。

我只使用一个堆,它运行正常,直到我达到一定数量的分配,我很确定这一点,因为我已经评论了一个分配,它会在下一个崩溃。

配额=磁盘空间?文档没有涵盖这个特定功能的错误代码,我已经分析了应用程序,并为进程分配了大量的内存。我还在堆指针上放了一个数据断点,它不会中断。当我单步执行时,堆指针正常,直到我对HeapAlloc的调用。

太奇怪了..

2 个答案:

答案 0 :(得分:2)

尝试分配大块内存(即大于2MB),直到出现错误以确定问题是对象数还是总堆数。另外,你确定你没有分配超过2mb的内存吗?我在遇到2gb限制时看到了这个错误,但是除非你的页面文件已满,否则永远不会在2mb。

如果所有其他方法都失败了,请重新启动或尝试使用其他计算机。

答案 1 :(得分:1)

根据WinNt.h异常代码C0000017中的值映射到STATUS_NO_MEMORY,这是HeapAlloc将抛出的异常之一。因此,您要么已经内存不足,要么已经溢出了一个已分配的缓冲区并损坏了堆。