065

065



Zauważmy, że we fragmencie „Przed” nie usuwamy starego bufora. Z tego względu przy każdym wywołaniu metody następują straty pamięci.

Przykład: BF::FSetSize() w płikubits.cpp

Niezwracanie wskaźników do zmiennych automatycznych

unikanie awarii; unikanie nieoczekiwanych wyników

Przed

char * pownap2(char *szŹród)

{

char szCel[256j;

if(str!en(szSrc)>sizeof(szCei)-1) return NULL; lstrcpy(szCel, szŹród); return szCel;

Po

char * pownap2(char *szŹród)

{

char *szCel;

szCel = new char [lstrlen(szŹród)+1];

if(szCel == NULL) return NULL;

Istrcpy(szCel, szZród);

return szCel;

}

Automatyczne zmienne (te które są przydzielane na stosie, takie jak zmienne lokalne) są nietrwałe. Istnieją tak długo, jak funkcja ma zasięg. Po zakończeniu funkcji są automatycznie usuwane.

We fragmencie „Przed” najpierw przydzielamy na stosie pamięć dla bufora o nazwie szCel. Następnie kopiujemy do bufora napis i zwracamy wskaźnik do bufora. Wygląda dość zwyczajnie. Ale gdy następuje powrót z funkcji pownap2, wówczas stos zostaje wyczyszczony. A więc bufor szCel nie jest poprawny i może być w każdej chwili zapisany. Ale właśnie ten obszar jest wskazywany przez wskaźnik zwrócony przez funkcję.


Wyszukiwarka

Podobne podstrony:
We fragmencie „Przed” porównujemy liczbę całkowitą ze znakiem z liczbą całkowitą bez znaku. Kompilat
Ib = 20;}} We fragmencie „Przed” nadajemy wartości dwóm zmiennym przekazanym przez odwołanie. Co się
ullman156 (2) J 18 5. JEŻYK BAZ DANYCH SOL Zauważmy, że w tym zapytaniu wcale nie ma klauzuli WHERE,
265 § 3. Zbieżność szeregów dowolnych Łatwo zauważyć, że jeśli czynniki oc, nie rosną i są dodatnie,
P190911 050003 Przykład 9 Układ wydaje się być skomplikowany, jednak wystarczy zauważyć, ze zaznacz
PRZEDMOWA DO WYDANIA PIĄTEGO Ze zdziwieniem i przyjemnością zauważam, że kolejne wydanie skryptu nie
mech2 153 304 F Zauważymy, że otrzymana wartość x Jest równa promieniowi bezwładności pręta AB wzglę
mech2 153 304 F Zauważymy, że otrzymana wartość x Jest równa promieniowi bezwładności pręta AB wzglę
mZiemia we wszechświecie Imię I nazwiskof^ntrczy tx<t skiida v<f i 10 zadań. Przy każdym polec
Wszelkie prawa zastrzeżone Praca ta w całości ani we fragmentach nie może być powielana ani rozpowsz
Slajd36 (102) Zauważmy, że omówione układy PAL i PLA są układami kombinacyjnymi (składają się tylko
img048 48 Zauważmy, że ze względu na okresowy charaKt.ec sygnału nośnego dewiacja fazy AtfpM nie moż
IMG094 Przyczyny (3) r BADANI WŁĄCZALI AUTOMATYCZNEGO PILOTA I nie zauważyli, że norma społeczno, kt
Kant a filozofia idealizmu niemieckiego 69 nie mógł on zauważyć, że pojęcie przyrody nie mieści się

więcej podobnych podstron