1
我有一個應用程序,我需要掃描內存中的某些數據類型。爲了得到一些基準測試,我颳起了這個計劃:C++內存掃描
long count = 0;
MEMORY_BASIC_INFORMATION meminfo;
unsigned char *addr = 0;
HANDLE hProc = GetCurrentProcess();
while (true){
if (VirtualQueryEx(hProc, addr, &meminfo, sizeof(meminfo)) == 0){
break;
}
if ((meminfo.State & MEM_COMMIT) && (meminfo.Protect & WRITABLE)){
addr = (unsigned char*)meminfo.BaseAddress + meminfo.RegionSize;
count++;
printf("%d",count);
}
}
printf("%ld\n",count);
這個程序不工作在第一內存塊,它塊/崩潰。從概念上講,它也失敗了,理想情況下我需要指向當前流程中的所有變量,所以我可以檢查它們是否與我有任何關聯。我已經谷歌了一段時間無濟於事,如果有人能把我推向正確的方向,那會很棒。
我知道首先這樣做通常是一個壞主意,我只想知道如果我需要這樣做會怎樣做。
可能只是用** **調試器可能是一個正確的方式),發現在程序B中的錯誤)執行任何類型的進程內存您希望通過您的程序實現的檢查。另一方面,如果你只關心某種類型的基準測試,那麼就有專門的工具,例如'gprof'。 – mikyra
當你說它在第一個內存塊崩潰時,你的意思是什麼?你的意思是說調用VirtualQueryEx時出現錯誤?如果是這樣,錯誤代碼是什麼? (您可以通過調用[GetLastError](http://msdn.microsoft.com/en-us/library/windows/desktop/ms679360%28v=vs.85%29.aspx))來獲取此信息。 –