049 TIF

049 TIF



Wszystkie funkcje działające na napisach zakładają, że napis będzie zakończony znakiem pustym. Problem może wystąpić wówczas, gdy do kopiowania podnapisów używamy poleceń takich, jak memcpy. Jeśli zapomnimy o znaku pustyni, to podczas wykonywania operacji na napisie może zapanować chaos. Łatwo wywołać nieskończone pętle, zaśmiecić pamięć itp.

Przykład: Literal::&operator= w pliku regexp,h

Sprawdzanie rzeczywistego rozmiaru

unikanie awarii; unikanie nieoczekiwanych wyników

Przed

//Rozmiar bufora const cchLiterał = 256; private:

char m_rgch[cchLiterał-10]; public:

const Literał &operator= (const char *pch)

{

strncpy(m_rgch, pch, cchLiterał-1); return *this;

}

Po

//Rozmiar bufora const cchLiterał = 256; private:

char m_rgch[cchLiterał-10];

const Literał & o pe rato r=(const char *pch)

{

strncpy(m_rgch, pch, sizeof(m_rgch)-2);

return *this;

}

No dobrze, może ten kod jest trochę przekombinowany i nigdy nie będziemy czegoś takiego robić. Wymagana wielkość bufora jest określona przez stałą. We fragmencie „Przed” zaufaliśmy komentarzowi mówiącemu, że stała ta rzeczywiście wskazuje na wielkość bufora. Ale jak widać programista zrobił w kodzie coś zupełnie innego. Zaufanie komentarzowi prowadzi do błędu podczas kopiowania. Znacznie bezpiecz-


Wyszukiwarka

Podobne podstrony:
049 TIF Wszystkie funkcje działające na napisach zakładają, że napis będzie zakończony znakiem pusty
049 TIF Wszystkie funkcje działające na napisach zakładają, że napis będzie zakończony znakiem pusty
Wszystkie funkcje działające na napisach zakładają, że napis będzie zakończony znakiem pustym. Probl
168 TIF nakże zachować w wypadku funkcji działających na napisach, które mają zwyczaj przechodzenia
130ROZDZIAŁ 18. NAPISY printf("Xs", tekst); Większość funkcji działających na napisach
31 (404) 60 1.49 W stanie równowagi susa momentów względem punktu B wszystkich sił działających na u
Wypadkowa wszystkich sił działających na przyczepę wynosi: a) 104N    b) 0
4.    Zbiór wszystkich funkcji określonych na pewnym przedziale względem zwykłyc
Budowa pojazdów samochodowych (str 2) Elementy nośne samochodu ciężarowego Rama podwozia. Wszystkie
Elementy nośne samochodu ciężarowego Rama podwozia. Wszystkie obciążenia działające na pojazd
23 luty 07 (131) Dwa pierwsze równania (3.21) przedstawiają sumy współrzędnych wszystkich sił działa
ScanImage004 ! ą Duifrt TYtioPyiA Funkcje działające na datachFunkcja NEXT_DAYNEXT_DAY(da tal, dzień
ScanImage005 Funkcje działające na datach Do dat można też stosować wcześniej omówione funkcje zaokr
21(4) suma składowych wzdłuż osi x wszystkich sił działających na ciało jest ?rócjf składowej przysp

więcej podobnych podstron