Hi Alex and Ingo, Alex wrote: > > > +It is undefined behavior to dereference a null pointer > > > > That is formally true, but hardly helpful in a manual page because > > what happens when you dereference a NULL pointer is faily > > predictable in practice: a segmentation fault. > > > > Any other behaviour of the C language implementation would be such a > > massive security risk that i don't think even the most avid compiler > > optimizer would seriously consider it. ... > > While dereferencing a NULL pointer is formally undefined > > behaviour, it almost certainly causes a segmentation fault in > > practice. > > Oh, yeah, the act of dereferencing will very likely cause the process > to segfault; it seems useful info to add. Thanks! > > But also, the compiler can feel too smart about it, and silently > remove other portions of code that it deems useless.
Its long been the case that straying into undefined behaviour allows a compiler to optimise away what is stated above as ‘almost certain’, i.e. SIGSEGV. http://blog.llvm.org/2011/05/what-every-c-programmer-should-know.html Dereferencing a NULL Pointer: contrary to popular belief, dereferencing a null pointer in C is undefined. It is not defined to trap... NULL pointer dereferences being undefined enables a broad range of optimizations... In C-based languages, NULL being undefined enables a large number of simple scalar optimizations that are exposed as a result of macro expansion and inlining. > But consider the broader ISO C scenario (or old POSIX.1-2001), where > NULL isn't defined to be (void*)0. There it isn't so obvious that 0 > would also represent a null pointer. On a machine which uses a non-zero bit pattern as its NULL pointer, the constant 0 in a pointer context will be that non-zero bit pattern. I find the content of this man page for NULL seems confused. It's mixing reference material from standards with tutorial information for beginners at C programming. I think a man page should contain succinct reference material and leave introductory or exploratory material to accompanying papers. Do the Linux man pages ship accompanying papers, as the original ‘Editions’ of Unix did? Perhaps that's an opening and less constrained format? -- Cheers, Ralph.