从内存位置进行十六进制转储

问题描述 投票:0回答:3

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

谢谢, R

c++ memory-management pointers hex hexdump
3个回答
15
投票

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

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 是您要转储的数量。


0
投票

在 Windows 上,您可以使用

ReadProcessMemory
。我不知道 Linux 的等效项。


0
投票

如果您使用的是 Microsoft Visual Studio,我编写了一个扩展来执行此操作。

检查这些链接:

https://www.vsdebug.pro/pages/docs/hexdump.html https://www.vsdebug.pro/pages/tutorials/dumpbuffer.html

© www.soinside.com 2019 - 2024. All rights reserved.