我測試程序如下:零長度陣列結構的大小是多少?
#include <stdio.h>
#include <stdlib.h>
typedef struct _node_t {
int id;
int contents[0];
}node_t;
int
main(int argc, char* argv[])
{
printf("sizeof node_t is: %d\n", sizeof (struct _node_t)); // output: 4
node_t *node = (node_t*)malloc(sizeof(node_t) + sizeof(int) * 3);
printf("sizeof node is: %d\n", sizeof (node)); // output: 8
return 0;
}
和節點瞬間的大小爲8。然而,在malloc
功能,我把多餘的3個整數到node
結構。爲什麼節點大小的輸出仍然是8?
PS:GCC(GCC)4.6.3 20120306(紅帽4.6.3-2)
可能的重複[如果我在C/C++中定義一個0大小的數組會發生什麼?](http://stackoverflow.com/questions/9722632/what -happens-IF-I-限定-A-0尺寸陣列式-CC) – Lundin