dereferencing null

deadalnix deadalnix at gmail.com
Mon Mar 5 04:13:38 PST 2012


Le 03/03/2012 21:10, Timon Gehr a écrit :
> On 03/03/2012 09:00 PM, deadalnix wrote:
>> Le 03/03/2012 20:06, Walter Bright a écrit :
>>> On 3/3/2012 2:13 AM, bearophile wrote:
>>>> Walter:
>>>>
>>>>> Adding in software checks for null pointers will dramatically slow
>>>>> things
>>>>> down.
>>>>
>>>> Define this use of "dramatically" in a more quantitative and objective
>>>> way,
>>>> please. Is Java "dramatically" slower than C++/D here?
>>>
>>> You can try it for yourself. Take some OOP code of yours, and insert a
>>> null check in front of every dereference of the class handle.
>>
>> Why would you want to check every time ? You program will get a signal
>> from the system if it try to deference a null pointer, so thing can be
>> done in the signal handler, and no cost is involved.
>
> The signal will likely be the same for the following two code snippets:
>
> void main(){
> Object o;
> o.toString();
> }
>
> void main(){
> *cast(int*)0xDEADBEEF = 1337;
> }
>
>
> How to detect whether or not the access violation was actually caused by
> a null pointer?

Signal hanlder are provided a - system dependant - structure that 
contains such informations.

This is used to detect stackoverflow as well a null pointer deference. 
Lib like libsigsegv can help a lot to implement such a thing.


More information about the Digitalmars-d mailing list