【发布时间】:2011-09-24 17:32:28
【问题描述】:
我有一套用 C++/CLI 编写的测试,它们调用本地 DLL 以远程测试 Windows CE 设备。在测试设置过程中的两个时间点,本机堆上的内存被分配——一次分配 512 字节,另一次分配 572 字节。在这两种情况下,malloc() 最终都会使用 CRT 堆调用 HeapAlloc()。 CRT 堆的句柄在调用之间没有改变。用于分配 572 字节的调用失败,出现异常 0xc0000005(如果需要,我可以尝试提供代码示例,但必须弄清楚哪些示例足够通用,不会破坏 NDA)。
【问题讨论】:
-
@ildjarn 不同意。尝试分配内存时出现访问冲突是应用程序/进程中某些内容覆盖不应覆盖的内容的常见迹象(例如,写入分配块的末尾、写入无效指针、多次释放块等.).
-
我同意@jdigital,特别是当发生堆损坏时分配函数可能会崩溃(@jdigital 列出了几个可能的原因)。
-
(在没有动机的情况下重复我的问题,因为动机得到的反馈比问题本身更多。)你能在另一台机器上重现这个问题,还是只在一台机器上发生?
标签: .net c++-cli malloc heapalloc