You can copy from a zero sized pointer with memcpy, but not NULL.
That's about to change: https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3322.pdf
That's about to change: https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3322.pdf