[ LUGOS ] free, delete ...
Boris Benko
boris.benko na telekom.si
Pon Jun 22 08:18:05 CEST 1998
polz wrote:
> Imam preprosto programersko vprasanje:
>
> Kako lahko izvem, ali pointer kaze na alociran spomin in kako je bil
> ta spomin alociran(z malloc ali staticno).
Načeloma ne moreš. Lahko pa ga čisto na začetku inicializiraš na NULL in
tedaj nekje vmes
lahko preveriš, če kaže na lokacijo s tem, da preveriš ali je ali ni NULL.
Jaz to pogosto uporabljam
v situaciji, ko imam zanko, v kateri včasih alociram pomnilnik, včasih pa ne.
Takole:
char *pointer=NULL;
while(nek pogoj)
{
if(nek pogoj)
{
/* Potreba po alociranju */
if(pointer!=NULL) free(pointer);
pointer=malloc();
if(pointer!=NULL) potem nekaj naredi sicer vrni napako;
}
}
/* Na koncu sprosti */
if(pointer!=NULL)
{
free(pointer);
pointer=NULL;
}
Ne smeš pozabiti, da vedno, ko sprostiš pomnilnik, ga takoj znova alociraš
ali postaviš spet na NULL.
=b
--
============================================================================
Boris Benko, dipl.ing. | E-mail: Boris.Benko na telekom.si
Telekom Slovenije, PE Murska Sobota | B.Benko na s-gms.ms.edus.si
Senior Prog./Sys admin./Informatik | Boris.Benko na computer.org
Slu§ba za informatiko | Phone: +386 69 31 676
| ISDN: +386 69 14 632
============================================================================
Dodatne informacije o seznamu Starilist