[OSy] malloc(0)

Martin Decky decky at nenya.ms.mff.cuni.cz
Sun Dec 3 13:10:41 CET 2006


Hezky den,

> Ja bych se k tomu postavil pragmaticky. Co vlastne rika uzivatel, kdyz
> zavola malloc(0)? Nerika "ja chci blok velikosti nula", ale "ja nechci
> zadnou pamet".
> A co udelame, kdyz uzivatel zadnou pamet nechce? No, proste mu zadnou
> nedame. Takze bych vratil NULL a nelamal si s tim hlavu :o)

Dovedu si predstavit situaci, kdy to opravdu znamena "chci blok
velikosti nula" (tj. chci platny ukazatel, ktery neukazuje na zadna
data). Timto druhym zpusobem by se to melo chovat v pripade, ze
navratova hodnota NULL skutecne znamena "alokace se nepovedla", protoze
i alokace bloku nulove delky se nekdy nemusi podarit (napr. kdyz
alokator uz nema misto ve svych internich strukturach).

Dale je vhodne uvazit, ze operace malloc() a free() jsou parove. Takze
pokud p = malloc(0), mel by se free(p) chovat korektne (bud funguje
free(NULL), nebo malloc bude vracet platny ukazatel).


M.D.



More information about the NSWI004 mailing list