以下のプログラムをテストします。
#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 (Red Hat 4.6.3-2)