[Python-Dev] Problem with the memory docs

Martin v. Loewis martin@v.loewis.de
05 Apr 2002 09:39:31 +0200


Tim Peters <tim.one@comcast.net> writes:

> [martin@v.loewis.de]
> > That, OTOH, is not what Guido wants it to be. Guido wants Py_Malloc to
> > return 0 *only* in case of failure; allocating 0 bytes should
> > "normally" succeed. I still cannot see what problems you have with
> > this requirement.
> 
> I'm not following this at all.  Calling malloc(1) does exactly what Guido
> wants.  "malloc(1)" isn't a broken Unix manpage reference, if that's how
> you're reading it; it means call malloc with an argument of 1.

I think I'm now getting to the root of your confusion. Calling
malloc(1) is *not* what Guido wants. Instead, he wants that
py_malloc(0) returns a non-null pointer "normally".

Now, there are some C libraries which normally return a NULL pointer
for malloc(0); as you point out, C gives them the freedom to do so. To
work-around this under-specification, one can call malloc(1) -
standards mandate that this does attempt to allocate something. It may
be possible to find different work-arounds, but this is the most
straight-forward one.

Regards,
Martin