084 TIF

084 TIF



Język C++ - praktyczne wskazówki

Język C++ - praktyczne wskazówki


Przydzielanie pamięci dla stałych niestatycznych w obszarze kodu programu

unikanie awarii

Kod źródłowy

long la; long Ib;

WłTestO;

//Tutaj zaczynają się kłopoty const long gJStałaNieStatic = 1000; long *plc;

pic = (long *)&g_IStałaNieStatic;

*plc = 20;

Globalnym stałym niestatycznym nie przydziela się pamięci. Gdy będziemy uzyskiwać dostęp do adresu globalnej stałej niestatycznej, wówczas zostanie jej przydzielona pamięć w obszarze kodu programu. Pamięć ta będzie pamięcią, tylko do odczytu.

W wypadku konwertowania adresu stałej do adresu typu niebędącego stałą, tak jak w zamieszczonym kodzie źródłowym, możemy wprowadzić kompilator w zamieszanie. Wygeneruje on wówczas kod pozwalający na zapisanie przydzielonego obszaru pamięci, co jest bardzo niekorzystne. Najprawdopodobniej wystąpi ogólny błąd zabezpieczeń. Lepiej tego uniknąć.

Przyglądając się plikowi z zawartością pamięci, można zauważyć, że przestrzeń dla stałej została dodana na końcu segmentu kodu. (Więcej informacji na temat plików z zawartością pamięci znajduje się we wskazówce 158.)

Oto koniec pliku z zawartością pamięci po wycięciu problematycznego fragmentu kodu:

0001:0000d8dc _SetUnhandledExceptionFilter@4 0040e8dc f kernel32:KERNEL32.dll

0001:0000d8e2 JsBadCodePtr@4 0040e8e2 f kernel32:KERNEL32.dll 0002:00000054 ??_C@_02A@?$AA?$AA?$AA@ 0040f054 libcid:ostrint.obj

Po dodaniu omawianej części kodu plik z zawartością pamięci wygląda następująco:

0001:0000d92c _SetUnhandledExceptionFilter@4 0040e92c f kernel32:KERNEL32.dll

0001:0000d932 JsBadCodePtr@4 0040e932 f kernel32:KERNEL32.dll 0002:00000058 ??_C@_02A@?$AA?$AA?$AA@ 0040f058 libcid:ostrint.obj


Wyszukiwarka

Podobne podstrony:
080 TIF Język C++ - praktyczne wskazówki Ten rozdział i pięć następnych wiąże się z programowaniem o
13.    Petty, Geoff Nowoczesne nauczanie : praktyczne wskazówki i techniki dla nauczy
III. Jak poprowadzić lekcję o nauce - kilka praktycznych wskazówek i pomysłów. Wskazówki techniczne
173 TIF Język maszynowy a nie do zmiennej języka C++. Podobnie należy unikać nazw takich, jak PUSH,
006 tif JĘZYK POLSKI 23 (J LXVin 4—5. Ortyle pokazujjprzy tym wstępny etan temihologizacii wyra
-    25 godzin praktyki w szkole podstawowej dla uczniów z
interna H.7. Wskazówki edukacyjne dla pacjentów ze schorzeniami układu oddechowego Chory z chorobą u
kjh mmilllt aiSIWR>CI«l MIMinClrm Język. , . .anaielski portom IISPRAWDZIANYKOMPETENCJI dla Was I
104 4 nych. Jeżeli wychylenia wskazówek czujników dla miejsc od strony czopa korbowego mają kierunek
122 Odpowiedzi i wskazówki 2.3.11.    Dla n < c < n+ 1. 2.3.12.
INSTRUKCJA PRAKTYKI PEDAGOGICZNEJ CIĄGŁEJ DLA STUDENTÓW HISTORII STUDIÓW STACJONARNYCH I-go sto
INSTRUKCJA PRAKTYKI PEDAGOGICZNEJ CIĄGŁEJ DLA STUDENTÓW HISTORII STUDIÓW STACJONARNYCH Ii-go st
INSTRUKCJA PRAKTYKI PEDAGOGICZNEJ CIĄGŁEJ DLA STUDENTÓW HISTORII STUDIÓW STACJONARNYCH Ii-go

więcej podobnych podstron