C++ Wo werden die Datentypen gespeichert und wie?

crazyyzarc

Newbie
Registriert
Sep. 2014
Beiträge
7
Wenn ich Quellcode mit vielen doubles arbeiten (64 bit) verbraucht es schon viel mehr Speicher(!) als wenn man nur mit Shorts oder Integers arbeitet. Nun ist meine Frage wo werden die doubles im Speicher gespeichert weil es sagen immer wieder welche dass sonst der Speicher voll ist und so obwohl es bei mir keine Unterschiede macht ich merke davon nichts..!? Wo werden die gespeichert und sind sie nur temporär oder für immer ?
 
Lokale Variablen werden üblicherweise freigegeben, wenn die Methode returned.
 
und was im Speicher ist kann auch schnell weg sein wenn der Strom weg ist.
 
crazyyzarc schrieb:
Wenn ich Quellcode mit vielen doubles arbeiten (64 bit) verbraucht es schon viel mehr Speicher(!) als wenn man nur mit Shorts oder Integers arbeitet. Nun ist meine Frage wo werden die doubles im Speicher gespeichert weil es sagen immer wieder welche dass sonst der Speicher voll ist und so obwohl es bei mir keine Unterschiede macht ich merke davon nichts..!? Wo werden die gespeichert und sind sie nur temporär oder für immer ?

Ich mach sowas für gewöhnlich nur ungern, aber: Häää?

Dieser Text zeigt weder inhaltliche, noch irgendwelche sprachlichen Kompetenzen. Was auch immer das genaue Problem ist, es lässt sich nicht einmal erahnen. Vielleicht versuchst du das nochmal.

Etwas zu lesen, findest du hier.
 
inciter schrieb:
Ich mach sowas für gewöhnlich nur ungern, aber: Häää?

Dieser Text zeigt weder inhaltliche, noch irgendwelche sprachlichen Kompetenzen. Was auch immer das genaue Problem ist, es lässt sich nicht einmal erahnen. Vielleicht versuchst du das nochmal.

Etwas zu lesen, findest du hier.
Ich wollte nur wissen wie das genau mit der Speicherverwaltung funktioniert - in einer Kurzfassung
 
crazyyzarc schrieb:
Ich wollte nur wissen wie das genau mit der Speicherverwaltung funktioniert - in einer Kurzfassung

Sagen wir es so: Im Umgang mit C/C++ ist Speicherverwaltung das A und O. Es ist die Grundlage deiner Logik und dein ständiger Begleiter. Lerne es, begreife es.

Der Link, den ich dir gepostet habe, behandelt das Thema übersichtlich und ist auch für Anfänger leicht verständlich. Das ist bereits die Kurzfassung. Wenn das immer noch zu komplex ist, empfehle ich dir HTML.
 
Ich befürchte jeder Versuch dir die Speicherverwaltung in einem Forumspost zu erklären würde dich bloß mit Halbwissen zurück lassen.Wie von inciter gezeigt gibts dazu gute Quellen im Internet.

Davon abgesehen wäre meine Frage: Was macht dein Program? Um nur 500MB Ram voll zu bekommen braucht es schon grob 63 Millionen double Variablen. Sofern du nicht größere Mediendateien bearbeitest oder Programme für Microcontroller mit sehr wenig RAM schreibst dürfte Speicherplatz dein geringstes Problem sein. Das größere Problem bei Speicherverschwendung is meistens, dass damit oft auch die Performance in die Knie geht, aber das ist nochmal ein wesentlich komplexeres Thema.
 
Deine Stichworte sind Heap und Stack.
Im Heap landen permanente Daten des Programms und im Stack die temporären (rekursion, variablen in Funktionen die nicht per malloc() reserviert werden, denn malloc schreibt auf den Heap). Z.b. wird beim betreten einer Funktion ein Stack aufgemacht, befüllt und beim verlassen der Funktion wieder abgeräumt.

Beide sind Teil eines Adressraumes, das ist das was dem Prozess/Programm vom Betriebssystem zugewiesen wird. Innerhalb dieses Adressraumes arbeitet ein Programm.

Heap und Stack stehen sich gegenüber, mit Freiraum dazwischen. Wächst einer über die Grenze des anderen, gibt es einen Overflow (Stackoverflow). D.h. wenn du eine ewig lange Schleife mit double Variablen machst, quillt die Suppe irgendwann über. Am häufigsten passiert dies wenn Rekursionen zu tief sind, da kollidiert der Stack dann irgendwann gegen den Heap und Crash.

Wie genau diese Bereiche gehandhabt werden, hängt mitunter vom Betriebssystem ab.
Siehe hier: https://www.tu-chemnitz.de/urz/archiv/kursunterlagen/unix/adrspace.gif
 
Zuletzt bearbeitet von einem Moderator:
Zurück
Oben