[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