[so] malloc examen

Gringo Croco gringocroco at gmail.com
Sat Feb 17 02:09:00 EET 2007


discalimer: spun urmatoarele doar din principiu, daca primesc sau nu
punctaj la problema asta nota nu mi se schimba.

that being said, din textul problemei 6 de la examen:

fie un sistem pe 32 biti cu 1GB de RAM si urm. secv de cod:
printf("eroare: %d\n", malloc(512*1024*1024)==NULL?1:0);
printf("eroare: %d\n", malloc(512*1024*1024)==NULL?1:0);
printf("eroare: %d\n", malloc(512*1024*1024)==NULL?1:0);
ce se afiseaza?


din man malloc(3) (pe ubuntu 6.6) sectiunea BUGS:
       By default, Linux follows an  optimistic  memory  allocation  strategy.
       This  means  that  when malloc() returns non-NULL there is no guarantee
       that the memory really is available. This is a really bad bug.  In case
       it  turns  out  that the system is out of memory, one or more processes
       will be killed by the infamous OOM killer.

acum, ce contest eu este faptul ca problema nu specifica nicaieri ca e
vorba de un linux care are bugul asta.

sincer pana in seara asta nu stiam ca referentiind un pointer aflat in
rangeul alocat de malloc(3) pot avea un segmentation fault.


acum ce zic eu ca ar fi corect:
a) sa se anuleze penalizarea pentru subiectul in cazul celor care au
mentionat diferente de output in cazul in care exista swap sau nu si
au zis ca e posibil sa se aloce cei 1.5GiB RAM
b) sa nu se scada nicaieri in teme daca nu se verifica daca malloc(3)
intoarece sau nu NULL (desigur doar pe linux) intrucat mallocul de pe
linucsi returneaza NULL doar cand primeste un parametru mai mare sau
egal cu 4GiB sau 0.



--
Lucian Adrian Grijincu, 346CA


More information about the so mailing list