[Python-Dev] Problem with the memory docs

Fredrik Lundh fredrik@pythonware.com
Thu, 4 Apr 2002 19:19:46 +0200


tim wrote:
>> Requesting zero bytes returns a non-NULL pointer.
>> I can't guarantee this without insane effort, and our code has never
> guaranteed this.

umm. I have to admit that it's rather ugly, but I'm pretty sure the
following guarantees that requesting zero bytes will never return a
NULL pointer:
static char nullbyte = MAGIC;
void* malloc(int bytes)
{
 if (bytes == 0) {
#if DEBUG_MODE
 if (*nullbyte != MAGIC)
 uh-oh
#endif
 return &nullbyte;
 }
 ...
void free(void* ptr)
{
 if (ptr == &nullbyte) {
#if DEBUG_MODE
 if (*nullbyte != MAGIC)
 uh-oh
#endif
 return; /* nothing to do */
 }
 ...
</F>

AltStyle によって変換されたページ (->オリジナル) /