From: "Erik E. Fair" <f
One imagines that many pointer mistakes (bugs) in
assembly or C were
discovered and squashed in that version, modulo the historical
unhappiness resulting from address zero containing a zero if
dereferenced ("NULL pointers") in process address space.
PS: PDP-11 Unix didn't, I think, do much (anything?) to solve the null pointer
problem. (This is for early C versions; I don't know about the later BSD
ones.)
Location 0 was a usable address for both read and write for everything except
'pure-text' (0410 magic word) processes; in those it was only legal for
read. Address 0 mostly did not contain a 0, either; for C programs using the
stock run-time, it contained a 'setd' instruction, except in split I+D
processes, in which case data space location 0 probably (I'm too busy to spin
up my V6 emulator to check) contained some of the program's initialized data
(unless special arrangements had been made).
Noel