[Python-Dev] Problem with the memory docs

Guido van Rossum guido@python.org
Thu, 04 Apr 2002 09:54:08 -0500


> The docs for PyMem_Malloc say:
> 
>     Requesting zero bytes returns a non-NULL pointer.
> 
> I can't guarantee this without insane effort, and our code has never
> guaranteed this.  If pymalloc or the platform allocator can't even allocate
> one byte in this case, nothing can be done to guarantee it except to return
> "an address" fabricated out of thin air, and guaranteed not to match any
> legitimate address.  Then realloc and free would have to special-case the
> snot out of those fabricated addresses to avoid going insane.  Note that C
> does not guarantee malloc(0) will return a non-NULL pointer, even on
> platforms where malloc(0) *tries* to return a non-NULL pointer.  It doesn't
> have a choice about this:  since all non-NULL addresses returned by a
> conforming C malloc() have to be pairwise distinct so long as none are
> free()'ed, you can provoke any C implementation into returning NULL for
> malloc(0) just by calling malloc(0) often enough without doing any free()s.
> 
> I vote to change the docs.  If you vote for something else, you implement it
> <wink>.

The whole post is a joke, right?  You just mean that it can still
return NULL when it runs out of memory, so the docs should say that?

--Guido van Rossum (home page: http://www.python.org/~guido/)