[ 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