5 ms·
This is a really great example why you SHOULDN'T think of sizeof as a function. If sizeof were a function, the code int *foo = NULL; foo = malloc(sizeof(*
by xamuel 11y ago
This is a really great example why you SHOULDN'T think of sizeof as a function. If sizeof were a function, the code
int *foo = NULL;
foo = malloc(sizeof(*foo));
would be undefined behavior (dereferencing NULL)!
- Kranar 11y agoDereferencing a null pointer is legal in C. It's the conversion of a null pointer from from an r-value to an l-value that's illegal, which does not happen in that snippet of code. That's why it's perfectly legal in C to do this (&*foo), even if foo is a null pointer.
- masklinn 11y ago> Dereferencing a null pointer is legal in C. It's the conversion of a null pointer from from an r-value to an l-value that's illegal, which does not happen in that snippet of code. And it does not happen in that snippet of code because sizeof is nothing like a function.