In either C or C++, should I check pointer parameters against NULL/nullptr?

c, c++, null

Solution

While in general I don't see the value in detecting NULL (why NULL and not some other invalid address?) for a public API I'd probably still do it simply because many C and C++ programmers expect such behavior.

Problem

This question was inspired by this answer. I've always been of the philosophy that the callee is never responsible when the caller does something stupid, like passing of invalid parameters. I have arrived at this conclusion for several reasons, but perhaps the most important one comes from this article: Everything not defined is undefined. If a function doesn't say in it's docs that it's valid to pass `nullptr`, then you damn well better not be passing `nullptr` to that function. I don't think it's the responsibility of the callee to deal with such things. However, I know there are going to be some who disagree with me. I'm curious whether or not I should be checking for these things, and why.

Original source