在调试应用程序时,我在内存中发现一个我 100% 确定只包含 4 个字符串的结构。虽然我不太确定如何将它转换为数据结构,以便我可以使用结构指针地址来访问值。例如,这里是数据结构在内存中的样子(例如,假设它始终位于内存地址 0x123456)
数据结构由4个独立的字符串组成
string 1 = ad
string 2 = dgdhkkkkkkhkk
string 3 = ggghhjk
string 4 = dgcfoh
我试过创建一个像这样的数据结构
struct reversedConnectionDat_t
{
char * data1;
char * data2;
char * data3;
char * data4;
}
这就是我尝试访问数据的方式
reversedConnectionDat_t * storeDat = (reversedConnectionDat_t*)0x123456;
print(storeDat->data3);
但是好像不行。我没有正确地从内存中读取字符串吗?
(哦,字符串有时会与我在上面发布的示例代码中发布的内容发生变化,即有时字符串 1 的长度为 7,而字符串 3 的长度仅为 2,等等...)
最佳答案
你有一个指向指针结构的指针,所以即使你将结构指向正确的内存地址,你在结构中仍然有未初始化的指针。您需要为他们提供实际内存。我会尝试像这样设置你的结构......
struct reversedConnectionDat_t
{
char data1 [3];
char data2 [50];
char data3 [50];
char data4 [50];
}
顺便说一句,我没有计算空格。我只是猜到了,但你明白了。
关于C++将内存转换为数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45060536/