Advertisements
struct A {
int zero_member[0];
int other;
};
struct B {
int* zero_member_ptr[0];
int other;
};
printf("%d %d", sizeof(struct A), sizeof(struct B));
Output:
4 8
Why the difference?
In reality I’m using this with Android NDK, and I’ve tested it at Compiler Explorer without any flag. So, if this is not standard ISO C program, this problem should have no standard answer.
>Solution :
"Why the difference?"
Likely due to padding to meet pointer alignment requirements – even if it is size 0.