[ LUGOS ] free, delete ...

Jernej Kovše jernej.kovse na uni-mb.si
Tor Jun 23 08:29:59 CEST 1998


-----Original Message-----
From: polz <polz na writeme.com>
To: lugos-list na lugos.si <lugos-list na lugos.si>
Date: 22. junij 1998 20:10
Subject: Re: [ LUGOS ] free, delete ...


>
>>Dvomim da je to sploh mozno, brez pregledovanja raznoraznih kernelskih
>>struktur. Sploh pa se postavlja vprasanje - zakaj bi to informacijo
>>potreboval?
>>
>Pisem C++ knjiznico, ki vsebuje nekaj takega:
>
>
>class MojClass{
> MojClass* children; 
> ~MojClass();
>}
>
>V destruktorju izvedem delete vseh objektov v children.
>Ker lahko (in dostikrat mora) uporabnik v children vpisati pointerje
>na staticno deklarirane objekte, dostikrat dobim SIGILL, 
>illegal instruction, ker hocem sprostiti RAM, ki ni bil alociran z
>malloc.
>
>To je torej razlog. Kaj je pa resitev ?
>

Ni mi jasno nekaj: Delas v C++, ker imas classe, torej uporabljaj
C++ stvari za alokacijo pomnilnika, torej new namesto malloc in
delete namesto free. 

new rezervira prostor + poklice konstruktor, malloc pa samo
rezervira prostor

delete poklice destruktor + sprosti prostor, free pa samo sprosti
prostor.

Mogoce je v tem tezava --> free destruktorja NE poklice!

Jernej




Dodatne informacije o seznamu Starilist