i wstawiliśmy nowy. Powinniśmy się jednakże upewnić przed usunięciem starego bufora, czy nowy przydział jest możliwy.
Jeśli przydzielenie pamięci nie uda się, to najprawdopodobniej brakuje pamięci operacyjnej. Często oznacza to kłopoty. Jednym z rozwiązań jest dodanie asercji sprawdzających, czy wystarcza pamięci. Jednakże jeśli brakuje zasobów, to system może nie zdołać wyświetlić okna asercji. Warto w zamian rozważyć użycie śledzenia wywołań.
Jeśli przydzielenie pamięci nie uda się, to można oczywiście ustawić wskaźnik bufora na wartość NULL, W takim wypadku wszystkie następne operacje na buforze wymagająsprawdzenia, czy rzeczywiście on istnieje.
Przykład: BF::FSetSizeQ w pliku bits.cpp
unikanie strat pamięci
pdw = new DWORD[cdw]; if(pdw)
m_rgdw = pdw;
Po
pdw = new DWORD[cdw]; if(pdw)
if(m_rgdw)
delete [] m_rgdw; m_rgdw = pdw;
Jeśli w naszym kodzie przydziela się bufor w wyniku wywołania na zewnątrz konstruktora, to należy być przygotowanym na sytuację, w której procedura ta będzie wywoływana więcej niż raz. Zamieszczony przykład kodu jest fragmentem metody ustawiającej rozmiar bufora pamięci. Metoda ta może być wywoływana dowolną liczbę razy. Jeśli powiedzie się przydzielenie pamięci dla nowego bufora, wówczas usuwamy stary bufor, a wskaźnik ustawiamy na nowo przydzielony bufor.