int main()
{
int \*p \= 0;
printf("before addr: %pn", p);
p \= (int \*) malloc(0);
printf("after addr: %pn", p);
printf("sizeof: %un", sizeof(\*p));
\*p \= 1;
printf("\--- %d -- this is the last statment.n", \*p);
free(p);
}
Output
before addr: (nil)
after addr: 0x80496c8
sizeof: 4
-– 1 – this is the last statment.
Note :
Linux
- allows a ‘read’ of the zero sized allocated memory
- allows a ‘write’ on the zero sized allocated memory
- sizeof shows an allocation of 4 bytes.