RtlFreeHeap神秘地阻挡

时间:2014-10-15 13:48:09

标签: c++ memory-management windows-7-x64

我有一个分配了大约6.5 GB内存的进程。我有一个~160k订单的提升多指数地图。每个订单都有一个boost变体图。每张地图大约有50个元素。除了字符串之外,大多数变体类型大约是16个字节,而那些是C字符串的共享指针(我会使用标准字符串,但我被推翻了)。

我正在查看我的订单列表并在所有订单上调用map :: clear,并且在清除之前我已经被RtlpFreeHeap挂起了。特别是RtlpDecommitBlock,由RtlDeCommitFreeBlock调用,由RtlFreeHeap调用。

当我有大量订单对象时,这是一个问题。所有这些对象都是有效的内存,所以我不认为我在某些垃圾邮件地址上清除了。违规通话是在ntdll,所以我没有源代码来查看是什么。在堆栈中,我发现调试器可以检查的最后一个调用是_free_base,并且调用了HeapFree:

HeapFree(0x0000000000510000, 0, 0x000000016d7cf9e0);

但我并不怀疑这一点特别有说服力。有没有人见过这个?我有什么想法可以进一步诊断我为什么要挂在这里?

0 个答案:

没有答案