Re:C is not your friend: sizeof and side-effects
by gandalf013 on Wednesday April 19, 2017 @06:59PM
(#14152540)
A very common idiom is "T p = malloc(n sizeof *p)". That only works if sizeof doesn't evaluate its arguments.
[ Parent
| on HN ]
Re:C is not your friend: sizeof and side-effects
by kazinator on Wednesday April 19, 2017 @07:59PM
(#14152880)
Why not? Suppose you have a C99 VLA object, and you want to malloc the equivalent amount of space. Couldn't you just do this:
int vla[nparam];
int *pcopyspace = malloc(sizeof vla);
Here sizeof vla is basically just nparam sizeof(int).vla* is evaluated to the extent of calculating its run-time size.