我有一个应用程序需要扫描内存中的某些数据类型。为了获得一些基准测试,我启动了这个程序:
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);
该程序不起作用,它在第一个内存块处阻塞/崩溃。从概念上讲,它也失败了,理想情况下,我需要指向当前流程中所有变量的指针,这样我就可以检查它们是否与我有任何相关性。我已经用谷歌搜索了一段时间,但无济于事,如果有人能把我推向正确的方向,那就太好了。
我知道首先这样做通常是一个坏主意,我只是想知道如果我需要这样做会如何完成。