在我为他们制作的游戏中,他们最近做了一些改变,打破了一个特定的实体。在与找到解决方法的人交谈之后,他们只有他们给我的信息是他们“修补了”并且不再共享。
我基本上试图记住如何在运行时转储类对象的内存内容。我依旧记得以前做过类似的事,但已经很久了。任何有关如何解决这个问题的帮助都将非常感激。
答案 0 :(得分:6)
template <class T>
void dumpobject(T const *t) {
unsigned char const *p = reinterpret_cast<unsigned char const *>(t);
for (size_t n = 0 ; n < sizeof(T) ; ++n)
printf("%02d ", p[n]);
printf("\n");
}
答案 1 :(得分:2)
好吧,你可以reinterpret_cast
将你的对象实例作为char
数组显示出来。
Foo foo; // Your object
// Here comes the ugly cast
const unsigned char* a = reinterpret_cast<const unsigned char*>(&foo);
for (size_t i = 0; i < sizeof(foo); ++i)
{
using namespace std;
cout << hex << setw(2) << static_cast<unsigned int>(a[i]) << " ";
}
这很难看,但应工作。
无论如何,处理某些实现的内部结构通常不是一个好主意。