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 pusty049 TIF Wszystkie funkcje działające na napisach zakładają, że napis będzie zakończony znakiem pustyWszystkie funkcje działające na napisach zakładają, że napis będzie zakończony znakiem pustym. Probl168 TIF nakże zachować w wypadku funkcji działających na napisach, które mają zwyczaj przechodzenia130ROZDZIAŁ 18. NAPISY printf("Xs", tekst); Większość funkcji działających na napisach31 (404) 60 1.49 W stanie równowagi susa momentów względem punktu B wszystkich sił działających na uWypadkowa wszystkich sił działających na przyczepę wynosi: a) 104N b) 04. Zbiór wszystkich funkcji określonych na pewnym przedziale względem zwykłycBudowa pojazdów samochodowych (str 2) Elementy nośne samochodu ciężarowego Rama podwozia. WszystkieElementy nośne samochodu ciężarowego Rama podwozia. Wszystkie obciążenia działające na pojazd23 luty 07 (131) Dwa pierwsze równania (3.21) przedstawiają sumy współrzędnych wszystkich sił działaScanImage004 ! ą 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 zaokr21(4) suma składowych wzdłuż osi x wszystkich sił działających na ciało jest ?rócjf składowej przyspwięcej podobnych podstron