Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 23 Nov 2002 20:16:35 +1100 (EST)
From:      Bruce Evans <bde@zeta.org.au>
To:        "M. Warner Losh" <imp@bsdimp.com>
Cc:        marc@informatik.uni-bremen.de, <freebsd-current@FreeBSD.ORG>
Subject:   Re: malloc(0) broken?
Message-ID:  <20021123195334.W48944-100000@gamplex.bde.org>
In-Reply-To: <20021122.193635.99607054.imp@bsdimp.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, 22 Nov 2002, M. Warner Losh wrote:

> In message: <79620000.1037978720@leeloo.intern.geht.de>
>             Marc Recht <marc@informatik.uni-bremen.de> writes:
> : A malloc(0) returns always 0x800 on my system. This causes some third-party
> : software to fail, because they expect malloc(0) to return NULL. Is this a
> : bug or a feature? malloc(3) doesn't mention anything.
>
> malloc(0) is undefined.  If people expect it to return NULL, that
> software is not standard conforming.

Er, malloc(0) is defined as returning either a null pointer or a pointer
to 0 bytes of allocated space.  Which one it chooses to return is
implementation-defined, not undefined.  C90 has a bogus requirement that
the pointer for malloc(0) be "unique", whatever that means.  C99 only
requires that the objects pointed to by the results of malloc() be
disjoint, and this is satisfied by FreeBSD's behaviour of returning the
same magic pointer for each instance of malloc(0).

Bruce


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20021123195334.W48944-100000>