Mam pytanie wyjaśniające moje wątpliwości dotyczące organizacji pamięci w komputerze w C++.Sekcja danych w C++
W C++ różne dane są umieszczane w różnych miejscach. Moje zrozumienie jest takie.
1) sekcja segmentu danych, w której znajdują się dane globalne i statyczne;
2) sekcji hałdy, przedmiotów wytworzonych nowym
3) części stosu, w zmiennej lokalnej
4) części tekstu, na samym kodzie.
Czy to prawda? Czy jest coś, co przeoczyłem lub zrobiłem źle?
Dzięki!
Właściwie to zależy od formatu obiektu. Dla uproszczenia, na przykład w Mach-O, wszystkie ** stałe ** dane będą przechowywane w segmencie "__TEXT". A potem jest jeszcze segment "__LINKEDIT", który pomaga 'dyld'owi na dynamiczne łączenie, itp. – kennytm
Głównym problemem z twoim pytaniem jest założenie, że istnieje tu jakiś standard, podczas gdy są tylko zwyczajne praktyki. Choć wspomniana organizacja jest powszechna i uzasadniona, nie jest uniwersalna i może się różnić w zależności od implementacji. –
Innym problemem jest to, że standard językowy (specyfikacja) nie wymaga sekcji danych ani segmentów. Język określa atrybuty (odczyt lub zapis, publiczny, prywatny) i czas życia obiektu. Sekcje danych zależą od kompilatora lub tłumacza i mogą różnić się w zależności od producenta i wersji. –