[Python-Dev] Problem with the memory docs (original) (raw)

Guido van Rossum guido@python.org
Fri, 05 Apr 2002 11🔞41 -0500


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

> [martin@v.loewis.de] > > That, OTOH, is not what Guido wants it to be. Guido wants PyMalloc 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 pymalloc(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.

I'm still confused. What is the difference between calling malloc(1) and returning a non-null pointer "normally" ?

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