我正在使用一個大的閉源框架。我最近添加了一個新實體,現在我在執行某些操作時遇到訪問衝突。但是,它們發生在框架內的調用上,所以我不知道我執行的是錯誤的,因爲我沒有收到調用堆棧。調試訪問衝突
在CRT文件tidtable.c
中定義的函數_CRTIMP PFLS_GETVALUE_FUNCTION __cdecl __set_flsgetvalue()
中報告違規。具體的行是PFLS_GETVALUE_FUNCTION flsGetValue = FLS_GETVALUE;
。我不確定,但我認爲它與函數指針有關?
錯誤消息是Unhandled exception at 0x0000007a in fmwk.exe: 0xC0000005: Access violation reading location 0x0000007a.
。我的解釋是,它試圖訪問偏移量爲0x7a
的東西到一個對象中,但它被激活了一個空指針。它是否正確?如果是這樣,有沒有辦法找到那個偏移量對應的東西?
下面是調用堆棧:
0000007a()
fmwk.dll!100f2630()
[Frames below may be incorrect and/or missing, no symbols loaded for fmwk.dll]
<lots of framework and windows dlls>
fmwk.exe!00402ef4()
msvcr100.dll!__set_flsgetvalue() Line 145 + 0xc bytes C
msvcr100.dll!_getptd_noexit() Line 498 + 0x7 bytes C
msvcr100.dll!_getptd() Line 523 + 0x5 bytes C
msvcr100.dll!_LocaleUpdate::_LocaleUpdate(localeinfo_struct * plocinfo=0x00000000) Line 243 + 0x5 bytes C++
msvcr100.dll!x_ismbbtype_l(localeinfo_struct * plocinfo=0x00000000, unsigned int tst=0, int cmask=1386664, int kmask=1414714) Line 219 C++
msvcr100.dll!_ismbblead(unsigned int tst=0) Line 172 + 0xe bytes C++
fmwk.exe!004010a0()
fmwk.exe!00404d61()
kernel32.dll!7c817077()
也許這是[運行時庫](http://msdn.microsoft.com/en-us/library/2kzt1wy3.aspx)不匹配,因爲它看起來像代碼試圖訪問不存在的線程本地存儲(儘管我可能會誤讀堆棧跟蹤錯誤)。 – user786653