In C o C ++, dovrei controllare i parametri del puntatore contro NULL / nullptr?

Questa domanda è stata ispirata da questa risposta .

Sono sempre stato della filosofia che il callee non è mai responsabile quando il chiamante fa qualcosa di stupido, come il passaggio di parametri non validi. Sono arrivato a questa conclusione per diversi motivi, ma forse il più importante viene da questo articolo :

Tutto ciò che non è definito non è definito.

Se una funzione non dice nei suoi documenti che è valido passare nullptr , allora è meglio non passare nullptr a quella funzione. Non penso che sia responsabilità del callee occuparsi di queste cose.

Tuttavia, so che ci saranno alcuni che non sono d’accordo con me. Sono curioso di sapere se dovrei controllare queste cose e perché.