[LUGOS-PROG] calloc(0,0) != NULL

Dejan Markic deviced na siol.net
Pet Apr 19 22:17:05 CEST 2002


par zanimivih stvari glede tega:

Single UNIX specification:
If the size of the space requested is 0, the behaviour is
implementation-dependent; the value returned will be either a null pointer
or a unique pointer.

Linux:
if size is equal to zero, the call is equivalent to free(ptr).
free() tud ne bo settal ptr na NULL

Zakaj linux ne vrne NULL ...
We chose to make malloc(0) return non-null in glibc for the same reason:
because some existing program assumed it would.

Na hitro sem preletel freeBSD man page o malloc, pa nikjer nc ne pise, ali
pa nisem opazil. Kratek test mi je pokazal da ne vraca NULL.

NULL bo pa v vsakem primeru vrnila funkcija ob napaki.

Lp,
Dejan
----- Original Message -----
From: "Rok Papež" <rok.papez na kiss.uni-lj.si>
To: <lugos-prog na lugos.si>
Sent: Friday, April 19, 2002 9:00 PM
Subject: [LUGOS-PROG] calloc(0,0) != NULL


> Zivjo!
>
> calloc(0,0) in malloc(0) mi ne vrne NULL :-((((( tako na RH 7.1
> kot na RH 6.2. Ali lahko prosim kdo sproba spodnji programcek se
> na kaksni drugi platformi; po moznosti ne-Linux ?
>
> --------------------------------
> #include <stdlib.h>
> #include <stdio.h>
>
> int main() {
>   char *x;
>   int i;
>   x = calloc(0, 0);
>   if(x)
>     printf("Calloc: Not NULL!\n");
>   x = malloc(0);
>   if(x)
>     printf("Malloc: Not NULL!\n");
>   return 0;
> }
> --------------------------------
>
> --
> hvala,
> Rok Papež.




Dodatne informacije o seznamu lugos-prog