[LUGOS] c++

Metod Kozelj metod.kozelj at lugos.si
Fri May 5 09:20:48 CEST 2006


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



More information about the lugos-list mailing list