$Ł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;
}
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