从托管DLL中调用的非托管DLL调用malloc()会生成访问冲突

时间:2011-06-28 22:43:48

标签: .net c++-cli malloc heapalloc

我有一套用C ++ / CLI编写的测试,它们调用本机DLL以远程测试Windows CE设备。在测试设置过程中的两点,分配本机堆上的内存 - 一次为512字节,另一次为572字节。在这两个实例中,malloc()最终使用CRT堆调用HeapAlloc()。 CRT堆的句柄在调用之间没有变化。用于分配572个字节的调用失败,异常为0xc0000005(如果需要,我可以尝试提供代码示例,但必须弄清楚哪些示例通用不足以破坏NDA)。

2 个答案:

答案 0 :(得分:1)

看起来最终解决问题的是没有使用C运行时堆,而是使用GetProcessHeap()或本地堆来进行分配。

答案 1 :(得分:0)

考虑使用调试malloc。 Here's an article关于使用DevStudio调试模式来替换malloc和free的特殊调试版本。