063 TIF

063 TIF



$ŁOW::~SŁOW()

{

if(m_pstrumień)

delete m_pstrumieri;

}

Przed zwolnieniem pamięci należy się upewnić, że została ona wcześniej przydzielona. W przeciwnym razie wywołamy wielką awarię. Mogliśmy na przykład już wcześniej zwolnić pamięć. A może przez jakiś błąd wcale jej nie przydzieliliśmy.

Jeśli zwalniamy pamięć nie destruktorem, to musimy się upewnić, że składowe zmienne wskaźnikowe otrzymują wartości zerowe, aby uniknąć ponownego zwolnienia pamięci.

if (m_p strumień)

{

delete m_pstrumień; m_pstrumień = NULL;

}

Sprawdzanie przed zamianą, czy można przydzielić pamięć

unikanie awarii

Przed

pdw = new DWORD[tdw]; if(m_rgdw)

delete [] m_rgdw; m_rgdw = pdw;

Po

pdw = new DWORD[cdw]; if(pdw)

{

if(mrgdw)

delete [] m_rgdw; m_rgdw - pdw;

Podany przykład kodu jest fragmentem procedury zamieniającej bufor pamięci buforem o innym rozmiarze. We fragmencie „Przed” zwyczajnie usunęliśmy stary bufor


Wyszukiwarka

Podobne podstrony:
118 TIF ~Napis(void){ if(m_pch) delete m_pch;} }; Dostęp do konstruktorów można kontrolować zamienia
167 TIF if(m_pstrumień->DajTypStrumienia() != typstrumieniaPlik){ delete m_pstrumień; m_pstrumień
081 TIF Klasy ~Napis(void){ if(m_pch) delete m_pch;} }; Wszystkie zmienne składowe trzeba inicjalizo
070 TIF virtua! ~lntelWskPodst(){ rf(m_pt) delete m_pt; m_pt = NULL;} T &operator*() const{ retu
~Napis(void){ if(m_pch) delete m_pch;} }; Po class Napis{ private: const int m_cchTest; int
pkmkol24 tif <11 tii i/ 4# #r *if <1/ Ba- - (w^Toa^1 j W-ię^> ^ Któl    ;

więcej podobnych podstron