#include struct mblock { struct mblock *next; size_t size; char mem_area[]; }; struct mblock_without_fam { struct mblock *next; size_t size; }; int main() { struct mblock mblock; printf("sizeof(mblock_without_fam) = %zu\n", sizeof(struct mblock_without_fam)); printf("sizeof(mblock) = %zu\n", sizeof(mblock)); printf("sizeof(mblock.next) = %zu\n", sizeof(mblock.next)); printf("sizeof(mblock.size) = %zu\n\n", sizeof(mblock.size)); // Compiler error: // invalid application of 'sizeof' to an incomplete type 'char[]' //printf("sizeof(mblock.mem_area): %zu\n", sizeof(mblock.mem_area)); printf("&mblock = %p\n", &mblock); printf("&mblock.next = %p\n", &mblock.next); printf("&mblock.size = %p\n", &mblock.size); printf("&mblock.mem_area = %p\n", &mblock.mem_area); printf("&mblock + 1 = %p\n", &mblock + 1); }