如何计算C中结构的大小?

run*_*ode 0 c c++ struct

我有以下结构

struct node{
    int value;
    struct node *next;
    struct node *prev;
};
Run Code Online (Sandbox Code Playgroud)

而且我认为大小必须大于sizeof(整数).

但是如何计算这个结构的整体大小令人困惑.

那么如何计算尺寸呢?

我的意思是我想手动计算,而不是通过计算机...

joh*_*ohn 5

尺寸至少是sizeof(int) + sizeof(struct node *) + sizeof(struct node *).但它可能更多,因为允许编译器根据需要向结构中添加填充字节.

多大sizeof(int)sizeof(struct node*)是取决于你的系统.如果你有一个32位系统,它们可能分别是4个字节,如果你有64位系统,它们可能是8个字节.但实际上唯一可以确定的方法是使用编译器打印出大小.


Pff*_*fft 5

如果您在谈论 32 位应用程序,整数和指针是 4 个字节。因此,您的结构大小为 12 个字节。

struct node{
    int value;         // 0x0 - 0x4
    struct node *next; // 0x4 - 0x8
    struct node *prev; // 0x8 - 0xC
};
Run Code Online (Sandbox Code Playgroud)

集会:

struct [0xDEADBEEF] {
    int 0x0;
    struct node *0x4;
    struct node *0x8;
};
Run Code Online (Sandbox Code Playgroud)

侧注存储器指针读取[[0xDEADBEEF] +为0x0]将返回的节点- >值等的当前值。