结构大小定义

时间:2013-08-03 23:44:49

标签: c++ memory size structure allocation

找到一些类似的帖子,但没有针对我的具体问题。

我正在尝试从外部进程内存中读取数据结构。我已经使用OpenProcess来获取句柄,并且我的读取内存的功能非常简洁,但是在组装了第一个要读取的结构(应该是0xC0字节)之后,我调用了sizeof(结构)并获得了该值的两倍。如果有帮助,结构如下。希望有人能指出我正确的方向。

由于

struct BattleListEntry
{
    int CID;
    wstring Name;
    byte* unknown[16];
    int z, y, x;
    byte* unknown2[8];
    int Direction;
    int TimeLastMoved;
    int rnd3, rnd4, rnd5, rnd6;
    int isWalking;
    byte* unknown3[12];
    int Outfit1, Outfit2, Outfit3, Outfit4, Outfit5;
    byte* unknown4[24];
    int HpPct; // 40 * 4 from start
    int rnd7;
    int rnd8;
    //byte* unknown5[12];
    int rnd9, rnd10, rnd11, rnd12, rnd13, rnd14, rnd15, rnd16, rnd17, rnd18;
};

2 个答案:

答案 0 :(得分:1)

您似乎相信byte* unknown[16]大16字节。实际上,它的16*sizeof(void*)字节很大。它不是一个字节数组,而是一个指针数组。

答案 1 :(得分:0)

您在结构中使用的类型并非都是固定大小。例如;

byte* unknown[16];

您可以尝试最小化变体大小的类型并将它们放到最后并更好地使用标签来声明它们的大小。