跳转至

结构如何工作

理解结构——它们如何对齐以及如何模仿——非常有用。例如,如果你在自己的代码中复制游戏的结构,就可以用单个操作从内存中读取或写入这些完整结构。考虑一个游戏这样声明玩家的当前和最大生命值:

struct {
    int current;
    int max;
} vital;
vital health;

如果一个经验不足的游戏黑客想从内存中读取这些信息,他们可能会写类似这样的代码来获取生命值:

int currentHealth = readIntegerFromMemory(currentHe
althAddress);
int maxHealth = readIntegerFromMemory(maxHealthAddr
ess);

这个游戏黑客没有意识到在内存中看到这些值彼此相邻可能不仅仅是巧合,所以他们用了两个单独的变量。但如果你带着结构知识出现,你可能会得出结论:由于这些值密切相关且在内存中相邻,我们的黑客本可以使用结构:

struct {
    int current;
    int max;
} _vital;
 _vital health = readTypeFromMemory<_vital>(health
StructureAddress);

由于这段代码假设正在使用结构并正确模仿它,它可以用一行①就获取生命值和最大生命值。我们将在第 6 章更深入地探讨如何编写自己的代码从内存中读取。