It&#x27;s not dereferencing NULL that causes the segfault, its the actual reading or writing of the memory at the invalid address.  So, ignoring undefined behavior etc, &quot;* ptr;&quot; doesn&#x27;t actually generate a load or store since its not really doing anything, but &quot;x = * ptr;&quot; or &quot;* ptr = x;&quot; would.  You can also see similar behavior when calling a non-virtual member function on a NULL pointer, the crash doesn&#x27;t occur until the function actually tries to access some data on &quot;this&quot;.<p>This is all with the caveat that the actual behavior depends on the system and compiler as many others have pointed out.