内存位置的十六进制转储

时间:2009-08-17 08:14:19

标签: c++ memory-management pointers hex hexdump

我使用指针指定某种“共享内存”,我习惯使用它 在不同进程/线程之间交换数据。现在我想拥有 共享缓冲区内容的十六进制转储。有谁知道怎么做?

感谢, [R

2 个答案:

答案 0 :(得分:14)

使用强制转换,当然:-)该函数应该看起来像什么 像这样:

void Dump( const void * mem, unsigned int n ) {
  const char * p = reinterpret_cast< const char *>( mem );
  for ( unsigned int i = 0; i < n; i++ ) {
     std::cout << hex << int(p[i]) << " ";
  }
  std::cout << std::endl;
}

然后在使用中:

Foo * f = GetSharedFoo();
Dump( f, somesize );

其中somesize是你想要转储多少。

答案 1 :(得分:0)

在Windows上,您可以使用ReadProcessMemory。我不知道Linux等价物。