我试图理解一系列结构在内存中是什么样的。假设我有以下
struct b{
int x;
int y;
int z;
};
b barray[100];
所以现在barray是一个结构数组,其中barray是指向第一个结构的指针,即barray =& barray [0]。 如果int占用2个字节,然后说struct b占用6个字节,让我们说barray = 1000,指针的大小就是4个字节。然后是barray + 1 = 1004还是1006? 我的意思是数组是一个指针数组,每个指针指向它的结构实例,或者是所有100个结构放在一个连续的内存位置,并将数组的索引递增到下一个结构?
答案 0 :(得分:2)
数组是c中连续的内存块,因此结构数组的大小为sizeof(struct b)*number_of_structs
。所有结构都在数组中分配。
请注意,在您的示例中sizeof(struct b)
不能保证为6,因为允许编译器插入填充以对齐结构的字节对齐 - 您可以使用" packed"如果你愿意,可以避免这种情况但可能会影响性能。 Structure padding and packing