Oleg Goldshmidt <[EMAIL PROTECTED]> writes:

> [EMAIL PROTECTED] writes:
> 
> > For example IIRC the specs don't define what free((void *)0) should
> > do, so it can either return cleanly doing nothing or cause a
> > segmentation fault depending on the compiler.
> 
> Or send an email to your manager suggesting that your salary should be
> revised. It may be done by the same implementation that usually does
> nothing when you free(0), depending on the value of a trancendental
> function of the phase of the moon and the PID of your program.

Eh, I got carried away by the flow: free(0) is a nop - freeing the
same memory twice is what is undefined. From the man page:

       free() frees the memory space pointed to by ptr, which must
       have been returned by a previous call to malloc(), calloc() or
       realloc().  Other- wise, or if free(ptr) has already been
       called before, undefined behaviour occurs.  If ptr is NULL, no
       operation is performed.

Thanks to Elad Efrat for pointing it out privately, and sorry for the
confusion.

-- 
Oleg Goldshmidt | [EMAIL PROTECTED] | http://www.goldshmidt.org

=================================================================
To unsubscribe, send mail to [EMAIL PROTECTED] with
the word "unsubscribe" in the message body, e.g., run the command
echo unsubscribe | mail [EMAIL PROTECTED]

Reply via email to