【发布时间】:2010-04-09 00:27:39
【问题描述】:
在 Windows 平台上,我试图从变量所在的应用程序中转储内存。函数如下:
void MyDump(const void *m, unsigned int n)
{
const unsigned char *p = reinterpret_cast<const unsigned char *>(m);
char buffer[16];
unsigned int mod = 0;
for (unsigned int i = 0; i < n; ++i, ++mod) {
if (mod % 16 == 0) {
mod = 0;
std::cout << " | ";
for (unsigned short j = 0; j < 16; ++j) {
switch (buffer[j]) {
case 0xa:
case 0xb:
case 0xd:
case 0xe:
case 0xf:
std::cout << " ";
break;
default: std::cout << buffer[j];
}
}
std::cout << "\n0x" << std::setfill('0') << std::setw(8) << std::hex << (long)i << " | ";
}
buffer[i % 16] = p[i];
std::cout << std::setw(2) << std::hex << static_cast<unsigned int>(p[i]) << " ";
if (i % 4 == 0 && i != 1)
std::cout << " ";
}
}
现在,我如何知道我的进程内存空间从哪个地址开始,所有变量都存储在哪里?我现在该怎么做,该区域有多长?
例如:
MyDump(0x0000 /* <-- Starts from here? */, 0x1000 /* <-- This much? */);
最好的问候,
nhaa123
【问题讨论】:
-
在什么样的电脑和操作系统上?