We fragmencie „Po” problem ten rozwiązuje się dzięki przydzielaniu pamięci na stercie i zwrócenie wskaźnika do tej pamięci. Pamięć sterty nie jest usuwana po zakończeniu działania funkcji, a zatem ten kod jest bezpieczny.
Inne rozwiązanie polega na tym, że procedura wywołująca przydziela pamięć i przekazuje funkcji pownap2 wskaźnik do bufora, który może być zapełniony. To podejście jest stosowane w wielu aplikacjach Win32 API.
unikanie awarii; unikanie nieoczekiwanych wyników
BOOL FL:: FU staw Rozmiar (DWORD cbitPotrzebne)
{
DWORD *pdw; long cdw;
cdw = (cbitPotrzebne + cbitDWORD — 1)/ cbitDWORD;
pdw = new DWORD [cdw];
if(pdw)
lf(m_rgdw)
delete [] m_rgdw;
BOOL FL:;FUstawRozmiar(DWORD cbitPotrzebne)
DWORD *pdw; long cdw;
cdw = (cbitPotrzebne + cbitDWORD - 1)/ cbitDWORD;
pdw = new DWORD [cdw];
if(pdw)
if(m„rgdw)
delete [] m„rgdw;
memset(pdw, OL, sizeof(DWORD) * cdw);
Łatwo założyć, że zmienna lub tablica będzie miała domyślnie wartość, której się spodziewamy. Niestety takie założenia i nadzieje nie zaprowadzą nas daleko w programowaniu. Dlatego zawsze należy inicjalizować zmienne i tablice przed użyciem.