Zero-length allocation with posix_memalign()
Jason Evans
jasone at FreeBSD.org
Sun Jul 5 17:52:01 UTC 2009
Fabian Keil wrote:
> Rémi Denis-Courmont, one of the vlc developers, pointed out
> that passing a zero size to posix_memalign() should actually
> work, though:
>
> | In principle, while useless, there is no reason why allocating an empty
> | picture should not be possible. posix_memalign() does support zero-length
> | allocation anyway:
> | http://www.opengroup.org/onlinepubs/9699919799/functions/posix_memalign.html
> | | If the size of the space requested is 0, the behavior is
> | | implementation-defined; the value returned in memptr shall be either a
> | | null pointer or a unique pointer.
Standards: So many to choose from. This behavior for posix_memalign was
only defined as of the 2008 standard (see the Issue 7 notes for
posix_memalign):
https://www.opengroup.org/austin/interps/uploads/40/14543/AI-152.txt
Such requirements are unfortunate, because they induce a performance
penalty for every call, just so that programs can avoid proper handling
of edge cases in the rare situations for which such edge cases are a
real possibility.
I will add the pessimization to posix_memalign once the 8.0 freeze is
over. It will be quite some time before this behavior becomes
ubiquitous, so in the meanwhile it's probably a good idea to modify vlc
to avoid such allocation requests.
Thanks,
Jason
More information about the freebsd-hackers
mailing list