gpt4 book ai didi

c# - C# 中的堆错误

转载 作者:太空宇宙 更新时间:2023-11-04 12:07:42 25 4
gpt4 key购买 nike

我有一个 C# 程序来测试 C++/CLI 程序集(此程序集是 native C++ dll 的包装器)并且我收到以下错误消息:

Unhandled exception at 0x50f8fd85 (msvcr90d.dll) in TestKeyManagerApp.exe: 0xC0000005:     Access violation writing location 0x00000000.

Debug模式下的最后位置:dbgheap.c(Visual studio 2008 输出)

if (pHead == NULL)
{
*errno_tmp = ENOMEM; <----- ACCESS VIOLATION
RTCCALLBACK(_RTC_FuncCheckSet_hook,(1));
}

我创建了一次程序集类的对象(我的 C# 程序的私有(private)成员),在构造函数中我加载了 native C++ dll,现在如果我第二次使用程序集对象(第二次调用测试函数)我得到这个错误消息!

调用堆栈的输出:

msvcr90d.dll!_heap_alloc_dbg_impl(unsigned int nSize=532, int nBlockUse=2, const char * szFileName=0x50ec24a8, int nLine=588, int * errno_tmp=0x00000000)  Line 431 + 0x3 bytes C++

msvcr90d.dll!_nh_malloc_dbg_impl(unsigned int nSize=532, int nhFlag=0, int nBlockUse=2, const char * szFileName=0x50ec24a8, int nLine=588, int * errno_tmp=0x00000000) Line 239 + 0x19 bytes C++

msvcr90d.dll!_calloc_dbg_impl(unsigned int nNum=1, unsigned int nSize=532, int nBlockUse=2, const char * szFileName=0x50ec24a8, int nLine=588, int * errno_tmp=0x00000000) Line 593 + 0x20 bytes C++

msvcr90d.dll!_getptd_noexit() Line 588 + 0x1a bytes C

msvcr90d.dll!_errno() Line 281 + 0x5 bytes C

msvcr90d.dll!_calloc_dbg(unsigned int nNum=1, unsigned int nSize=532, int nBlockUse=2, const char * szFileName=0x50ec20a4, int nLine=373) Line 646 + 0x11 bytes C++

msvcr90d.dll!__CRTDLL_INIT(void * hDllHandle=0x50ec0000, unsigned long dwReason=2, void * lpreserved=0x00000000) Line 373 + 0x18 bytes C

msvcr90d.dll!_CRTDLL_INIT(void * hDllHandle=0x50ec0000, unsigned long dwReason=2, void * lpreserved=0x00000000) Line 214 + 0x11 bytes C

ntdll.dll!77c68968()
[Frames below may be incorrect and/or missing, no symbols loaded for ntdll.dll]
ntdll.dll!77c73820()
ntdll.dll!77c735bc()

我希望你能给我一些提示或技巧?

谢谢!

最佳答案

检查调用堆栈,特别是非托管调用堆栈。为此,您必须启用非托管代码调试。这可能是虚假删除或悬空/无效指针访问。通过最小化 native DLL 调用来缩小问题范围。

关于c# - C# 中的堆错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11306602/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com