Pointer if test for for NULL

Peter Dufault dufault at hda.com
Thu Apr 29 10:29:27 UTC 2010

On Apr 29, 2010, at 6:20 , Peter Dufault wrote:

> I tried to decide if on a "NULL not all-bits-zero" architecture you could come up with devious prototypes for malloc() to make your example not work.  I guess that's your basic question.  If the NULL bit pattern is actually 0xffffffff and you prototype malloc() to be uint8_t and you ignore all the warnings you're going to get when malloc() returns NULL, then p would wind up being 0x000000ff, and so "if (p)" would succeed.  I don't think this is an argument for removing "if (p) {".  If the style guide for a code base says "use if (p != NULL) {" then by all means change it in *that code base only*, leave it alone in external code.

Sigh.  I left out one of my important points, which is that "if (p != NULL) {" would also test true on the above-mentioned architecture, and I couldn't come up with a scheme where they would evaluate differently.  I've got to let that coffee take effect before posting.

Peter Dufault
HD Associates, Inc.      Software and System Engineering

More information about the users mailing list