[ LUGOS ] free, delete ...

Andrej Presern andrejp na luz.fe.uni-lj.si
Ned Jun 21 15:32:35 CEST 1998


Blaz Zupan wrote:
> 
> > > Kako lahko izvem, ali pointer kaze na alociran spomin in kako je bil
> > > ta spomin alociran(z malloc ali staticno).
> >
> > No wonder - taksno kot je, je tezko preprosto programersko vprasanje:)
> > Mogoce bo bolje, ce predstavis problem in zamisljeno resitev. Tako bo
> > vsaj razumljivo, kaj zelis vedeti.
> 
> Kot sem jaz razumel vprasanje, je hotel vprasati, kako ugotoviti razliko
> med a) in b):
> 
> a) pointer = malloc(256);
> b) char pointer[256];

To dvoje bos tezko primerjal:) Ce pa imas npr:
char *pointer;
char str[256];

a) pointer = malloc( 256 );
b) pointer = &str[0];

in bi rad izvedel, ali kaze 'pointer' na blok pomnilnika, dodeljen z
malloc() oz. blok pomnilnika, ki je bil dodeljen staticno, je pa to
tezko izvesti na enostaven nacin (ce ti primerjava pointer == &str[0] ne
zadostuje seveda). Ce je str globalna spremenljivka (ce je lokalna, se
je prostor zanjo dodelil dinamicno s kopice) in ce ves, kam se je image
programa (vkljucno z data/bss) nalozil, sicer lahko poskusis gledati,
ali kazalec pade v to obmocje, vendar pa taksno pocetje verjetno ni
prevec ucinkovito (se manj pa lepo), tako da bi verjetno bilo bolje
ubrati kaksno drugo pot za resitev problema (kakrsenkoli ze je), kot je
z ugotavljanjem ali kaze nek kazalec na dinamicno ali na staticno
dodeljen pomnilnik..

Andrej

-- 
Andrej Presern, andrejp na luz.fe.uni-lj.si




Dodatne informacije o seznamu Starilist