JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.phpMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Speicherbereiche?

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
RebornX
JLI'ler



Anmeldedatum: 16.03.2007
Beiträge: 169

Medaillen: Keine

BeitragVerfasst am: 22.03.2007, 15:44    Titel: Speicherbereiche? Antworten mit Zitat

Hi, ehm ich habe mal ne Frage:

Also bis jetzt habe ich 3 Speicherbereiche kennengelernt:
Den Datenbereich, den Stack und den Heap.

Ich frage mich jetzt aber wo diese allen speicherbereiche liegen???
Liegen die alle auf der Festplatte oder auf dem Arbeitsspeichen???
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Maxim
Senior JLI'ler



Anmeldedatum: 28.03.2004
Beiträge: 249

Medaillen: Keine

BeitragVerfasst am: 22.03.2007, 15:51    Titel: Antworten mit Zitat

Arbeitsspeicher natürlich

Datenbereich?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 22.03.2007, 16:40    Titel: Antworten mit Zitat

Datenbereich (ich denke, du meinst damit der Ort an dem deine Variablen im Programm stehen) und Stack beziehen sich auf denselben Speicher.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
RebornX
JLI'ler



Anmeldedatum: 16.03.2007
Beiträge: 169

Medaillen: Keine

BeitragVerfasst am: 22.03.2007, 16:50    Titel: Antworten mit Zitat

"Datenbereich" steht im Buch(Jetzt lerne ich Spieleprogrammierung mit DirectX) auf seite 152/7.7.1
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 22.03.2007, 16:52    Titel: Antworten mit Zitat

jo, und damit ist genau das gemeint was ich geschrieben habe Razz
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
RebornX
JLI'ler



Anmeldedatum: 16.03.2007
Beiträge: 169

Medaillen: Keine

BeitragVerfasst am: 22.03.2007, 16:54    Titel: Antworten mit Zitat

DirectXer hat Folgendes geschrieben:
...beziehen sich auf denselben Speicher.


Ehm Speicher?? Arbeitsspeicher oda Festplattenspeicher?

und wie siehts mit dem heap aus??
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
manu
Super JLI'ler


Alter: 35
Anmeldedatum: 09.03.2006
Beiträge: 327
Wohnort: allgäu (DE)
Medaillen: Keine

BeitragVerfasst am: 22.03.2007, 16:58    Titel: Antworten mit Zitat

RebornX hat Folgendes geschrieben:
DirectXer hat Folgendes geschrieben:
...beziehen sich auf denselben Speicher.


Ehm Speicher?? Arbeitsspeicher oda Festplattenspeicher?

und wie siehts mit dem heap aus??


Wie schon gesagt, es wird ausschließlich im _Arbeitsspeicher_ gespeichert. Stack sowie heap befinden sich im Arbeitsspeicher. Auf die festplatte kommt nichts derartiges, da musst du selber dateien schreiben. Smile

Und natürlich alles was windows in die Außlagerungsdatei schiebt kommt auf die Platte, aber das tut jetzt nichts zur Sache^^
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 22.03.2007, 17:08    Titel: Antworten mit Zitat

also, mal zusammenfassend:

In deinem Computer ist der RAM (Random Access Memory), der Arbeitsspeicher. Dadrin sind der Stack und der Heap angesiedelt. Der Stack wird direkt durch den Stack Pointer unterstützt, der ein effizientes Zugreifen auf Daten des Stacks erlaubt. Wenn du in deinem Programm Variablen deklarierst wie z.B.
CPP:
int var;
dann wird für diese Variable Speicher auf dem Stack allokiert (=reserviert). Diese Allokation wird vom im Grunde vom Compiler eingeleitet, wenn er beim Kompilieren auf die Deklaration stößt. Der Speicher, der im Buch mit Datenbereich angesprochen wird, ist im Grunde eine allokierte Region auf dem Stack. Der RAM hat aber noch einen anderen Bereich, der mit Heap bezeichnet wird. Zugriff auf seine Daten ist etwas langsamer als auf Daten des Stacks durch den Stack Pointer. Dafür ist er aber dynamisch, d.h., dass während der Laufzeit deines Programms eine variierende Menge an Speicher auf ihm allokiert werden kann. Die Größe der Daten, die du also auf dem Heap allokieren willst, kann variabel sein, während die für den Stack schon vor Programmbegin (also in der Compilierzeit) feststehen muss.

Gruß DXer
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
RebornX
JLI'ler



Anmeldedatum: 16.03.2007
Beiträge: 169

Medaillen: Keine

BeitragVerfasst am: 22.03.2007, 17:18    Titel: Antworten mit Zitat

aha also wenn ich dann auf dem heap memory leaks verursache, heißt das das auf meinem ARBEITSSPEICHER speicher verloren geht und ich dann somit nicht mehr 512 sondern sagen wir 511mb ram habe???

Dann kann ich mia ja neuen arbeitsspeicher hohlen Crying or Very sad

edit//oder wird das nach jedem neustart resettet??
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 22.03.2007, 17:25    Titel: Antworten mit Zitat

natürlich wird das nach jedem Neustart reseted! Manchmal sogar auch direkt nach dem Programm, bei security builds z.B., sollte man sich aber net drauf verlassen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 22.03.2007, 19:13    Titel: Antworten mit Zitat

prinzipiell wird der speicher nur als "gerade in benutzung" markeirt, und zwar vom betriebssystem. Sonst wäre Multitasking doof, wenn auf einmal der speicher durcheinander käme, und ein programm den speicher vom andern einfach so mitbenutzt.
Deshalb macht das Betriebssystem diese Speicherverwaltung. Theoretisch könnte es halt dirket nach dme beendne des programmes dessen speicher direkt frei geben, inwieweit das welches OS macht weiß ich nicht.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum