内存位置的十六进制转储

3 c++ hex pointers memory-management hexdump

我使用指针来指定某种"共享内存",我用它来在不同的进程/线程之间交换数据.现在我想对共享缓冲区的内容进行十六进制转储.有谁知道这是怎么做到的吗?

谢谢,R

小智 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;
}
Run Code Online (Sandbox Code Playgroud)

然后在使用中:

Foo * f = GetSharedFoo();
Dump( f, somesize );
Run Code Online (Sandbox Code Playgroud)

somesize是你想要转储多少.

  • 值得一提的另一件事是你可能应该转换为`const unsigned char*`以避免在随后的int-cast中将`ff`值扩展为`ffffffff`. (4认同)