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. KompilatIb = 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 zaznaczPRZEDMOWA DO WYDANIA PIĄTEGO Ze zdziwieniem i przyjemnością zauważam, że kolejne wydanie skryptu niemech2 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 polecWszelkie prawa zastrzeżone Praca ta w całości ani we fragmentach nie może być powielana ani rozpowszSlajd36 (102) Zauważmy, że omówione układy PAL i PLA są układami kombinacyjnymi (składają się tylkoimg048 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, ktKant a filozofia idealizmu niemieckiego 69 nie mógł on zauważyć, że pojęcie przyrody nie mieści sięwięcej podobnych podstron