2016-10-28 24 views
10

當我包括:視覺檢漏儀拋出「訪問衝突讀取位置」上的ntdll.dll

#include <vld.h>; 

在我的stdafx.h和運行我的程序它說,視覺檢漏儀2.5安裝。我可以運行我的計劃得很好,但它退出時,我得到這個錯誤:

Exception thrown at 0x00007FFFB7F57FE7 (ntdll.dll) in CPPAssessment.exe: 0xC0000005: Access violation reading location 0x00007FFFB8095252. 

If there is a handler for this exception, the program may be safely continued. 

但我只得到這個當我使視覺檢漏儀,所以我的猜測是,這就是問題所在。

但我找到了這個站點:Visual Leak Detector Forums有人提到了一個修復,但它導致一個github回購與vld.cpp文件,我不知道如何處理它。

看來錯誤是由Windows 10 aniversary更新造成的,但我不確定。

+0

Haha,jelmer:')Ik heb het zelfde probleem ... – Ken

+0

我有同樣的問題,但我的程序dosnt甚至開始。 –

+2

這個問題實際上與C++或C++ 11無關。由於「Visual Leak Detector」是第三方產品,因此您可能需要添加相關標籤,以吸引使用/維護此類產品的人員的注意。 – Peter

回答

2

某些Windows API正在分配自己的內存來處理一些內部數據。你可能試圖惹上那種內存。

在Visual Studio中,轉到DEBUG> Exceptions ...並添加「Native Run-Time Checks」。當你弄亂內存時,你的代碼會崩潰。看看你在調用堆棧中的位置,並調查最後一次內存修改。

我已經使用了VLD多年,有時它看起來很奇怪,但它總是準確的。如有疑問,請查看MSDN中的文檔,以確定應如何處理內存。

3

如果你真的不需要使用vld來檢測內存泄漏,Dr. Memory是一個選項,它在Windows上非常適合我,與Valgrind相同。