There was a big fight about memcpy() in 2010. https://lwn.net/Articles/416821/ It's sort of related but also sort of different. My understanding is that the glibc memcpy() says that memcpy() always does a dereference so it can delete all the NULL checks which come after. The linux kernel uses -fno-delete-null-pointer-checks to turn this behavior off. regards, dan carpenter