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 o13. Petty, Geoff Nowoczesne nauczanie : praktyczne wskazówki i techniki dla nauczyIII. Jak poprowadzić lekcję o nauce - kilka praktycznych wskazówek i pomysłów. Wskazówki techniczne173 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 zinterna H.7. Wskazówki edukacyjne dla pacjentów ze schorzeniami układu oddechowego Chory z chorobą ukjh mmilllt aiSIWR>CI«l MIMinClrm Język. , . .anaielski portom IISPRAWDZIANYKOMPETENCJI dla Was I104 4 nych. Jeżeli wychylenia wskazówek czujników dla miejsc od strony czopa korbowego mają kierunek122 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 stoINSTRUKCJA PRAKTYKI PEDAGOGICZNEJ CIĄGŁEJ DLA STUDENTÓW HISTORII STUDIÓW STACJONARNYCH Ii-go stINSTRUKCJA PRAKTYKI PEDAGOGICZNEJ CIĄGŁEJ DLA STUDENTÓW HISTORII STUDIÓW STACJONARNYCH Ii-gowięcej podobnych podstron