Howdy! Matevz Jekovec wrote:
>V C++ ne vemo, kolikšna je dolžina arraya, če ga kar od nekod dobimo, right? >npr. Če imamo podano nek kazalec int*, ki kaže na array integerjev, >vemo, da bo tam polje integerjev, ampak ne vemo, koliko dolgo. To je >tudi razlog, zakaj se ponavadi, če se pošilja argument funkciji polje, >vedno zraven pošilja tudi dolžino polja. >Ampak, delete[] funkcija pa sprosti celotno vsebino polja. >npr. >int stevila[10]; //rezerviramo prostor za 10 integerjev >delete[] stevila; //sprostimo prostor teh 10 integerjev > >Kako je pa to potem znotraj rešeno? delete[] kakor koli že, mora >ugotoviti, do kam lahko sprošča pomnilnik. Potem bi torej v standardni >knjižnici lahko bila tudi kakšna funkcija, ki bi ti vrnila velikost >polja - delete[] mora že nekako izvedeti. Bi zelo poenostavilo stvari na >čase ... > > Stvar je na najnižjem nivoju narejena s kombinacijo malloc() - free(). Malloc pa ne alocira le kosa pomnilnika, temveč eno malo strukturo. Poleg 'uporabniškega' pomnilnika ima zapisanih še nekaj 'računovodskih' informacij, med drugim tudi količino pomnilnika v dotičnem bloku. To informacijo potem uporabi free ... -- Peace! Mkx -- perl -e 'print $i=pack(c5,(41*2),sqrt(7056),(unpack(c,H)-2),oct(115),10);' -- echo 16i[q]sa[ln0=aln100%Pln100/snlbx]sbA0D4D465452snlb xq | dc _______________________________________________ lugos-list mailing list lugos-list@lugos.si http://liste2.lugos.si/cgi-bin/mailman/listinfo/lugos-list