int a[2];
这在内存中实际上看起来像:
//Assuming int is 2 bytes
add=2000, a[0]=124
add=2002, a[1]=534
这在内存中实际上是什么样子
struct l {
struct l * n;
long int pad[7];
};
struct l container;
我无法想象。请帮忙!
的第3.3.2节答案 0 :(得分:3)
struct l
的布局如下。正如这本书所说它将占用32个字节。
addr ref
-----------------
2000: n
2004: pad[0]
2008: pad[1]
...
2028: pad[6]
在32位系统struct l*
上,指向结构的指针将占用4个字节。类型long int
的变量将占用相同的内存量。
答案 1 :(得分:1)
假设架构中的指针是4个字节,架构中的long int是4个字节:
struct l {
struct l * n;
long int pad[7];
};
struct l someName;
布局将如下所示:
add=2000, someName.n
add=2004, someName.pad[0]
add=2008, someName.pad[1]
...
add=2028, someName.pad[6]
答案 2 :(得分:1)
这只意味着每次为struct l分配内存时,你需要4个字节(指针)+ 4个字节(假设long int是4个字节)* 7.
所以使用你的系统,它应该是: add = 2000 * n add = 2004 pad [0] add = 2008 pad [1] ...