free_item ( item **x).
(main::x) free_item::x ( ), NULL ( ).
printf("%p\n", x); main() ( free_item).
NULL x - , .
, , 0x00400000, , 0x00410000.
0x00400000 0x00410000 <- x is stored here
0x00400004 0x00400000 <- tmp described later; point to x
...
0x00410000 .......... <- x points here; start of item - returned by malloc
item **tmp = &x, , 0x00400000 ( tmp ).
free_item():
free(*tmp);
*tmp = NULL;