Aufteilung des RAM Speichers
-
Der RAM-Speicher wird vom Betriebssystem eigeteilt in STACK, HEAP,...
Aber welche Variablen liegen wo?
Nach meinen Kenntnissen liegen die mit new deklarierten Variablen im HEAP.
Jedoch was ist mit static deklarierten Variablen?
Mein Prof. sagt sie liegen im Codespeicher, ist das richtig?Und liegen lokale Variablen im STACK? Beziehungsweise sind lokale Variablen nur jene Variablen in main?
Für Information wäre ich sehr dankbar!
Mein Gehirn muss mehr belastet werden!
Ich will eben alles wissenMfg Mr.Schottky
-
-
Gibt für statische und konstante Variablen bei manchen Betriebssystemen extra Speicherbereiche, so ganz pauschal kann man das nicht sagen.
-
Bei gescheiten Kompilern/Linkern kann man des eh festlegen was wo im Speicher hinsoll. Denke in der PC Welt ist das nicht so bedeutend, aber bei z.B. embedded Programmierung brauch man das öfter.
-
konstanten werden oft direkt in den code compiliert, weil es zum einen schneller ist den speicher sequenziel abzuarbeiten als den irgendwo im ram abzurufen und zum anderen ist alleine schon die speicheradresse oft genau so groß wie konstanten (die meißten sind ja float,int also <=4byte).
wie gerade gesagt wurde, kann man bei manchen compilern genau festlegen wohin sie daten lagern sollen.
so ist es z.b. beim gba möglich die konstanten daten ins rom auszulagern und zeitkritische dinge (code und daten) in den cpu cache. es ist sogar möglich auf ein und den selben speicherbereich mehrrere codeteile compilieren zu lassen, die liegen dann zwar irgendwo im rom, aber man kann sie, wenn man sie benötigt, in den cache laden (z.b. movieplayer,3dengine,2dengine...) und dann mit normalen c befehlen diese anzuspringen (natürlich geht es total schief wenn man etwas 'anspringen' möchte, was sich zu der zeit garnicht im cache befindet.rapso->greets();
-
Danke! Jetzt scheine ich mich langsam damit auszukennen.
mfg
Mr.Schottky