下面的代碼沒有做任何有趣的事情,但神祕的是爲什麼內存博士會認爲這是一個單元化讀取?有任何想法嗎?Dr內存和神祕的未初始化讀取
#include <memory>
int main(int argc, const char* argv[])
{
int aa[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
std::unique_ptr<int[]> p {new int[10]};
for (auto i = 0; i < 10; ++i) {
p[i] = aa[i];
}
return 0;
} // <-- Dr Memory says UNINITIALIZED READ here
編輯:這裏是完整的錯誤細節。
Error #1: UNINITIALIZED READ: reading 0x0028ff20-0x0028ff24 4 byte(s)
# 0 __mingw_glob [src/main.cpp:14]
# 1 _setargv [src/main.cpp:14]
# 2 __mingw_CRTStartup
# 3 mainCRTStartup
# 4 ntdll.dll!RtlInitializeExceptionChain +0x62 (0x772c8fe2 <ntdll.dll+0x38fe2>)
# 5 ntdll.dll!RtlInitializeExceptionChain +0x35 (0x772c8fb5 <ntdll.dll+0x38fb5>)
Note: @0:00:00.297 in thread 9780
Note: instruction: cmp (%esi) $0x0040a11e
這個「醫生記憶」是否真的告訴你什麼,除了位置?沒有關於在讀取嘗試等時塊,偏移,堆棧或執行代碼行...?如果沒有,你可能想看看它的競爭...... –
我編輯我的問題,添加它提供的細節。 –
您需要提供正確的刪除程序。該代碼將嘗試「刪除」數據,但應該刪除[]它。 – stefan