Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Helmut

5x Contest-Sieger

Beiträge: 692

Wohnort: Bielefeld

  • Private Nachricht senden

11

23.06.2009, 00:08

Und welchem Stack wächst der Heap bitteschön entgegen? (Achtung Trickfrage)

Wenn der Heap in den Stack reinwachsen könnte, würde undefiniertes Verhalten entstehen. Das OS verhindert das natürlich.


Und dass der Geschwindigkeitsunterschied relevant ist habe ich nie behauptet, und ja, es ist nur eine Operation um auf eine RAM Adresse zuzugreifen. Da aber sowohl Stack als auch Heap im RAM gespeichert sind wüsste ich jetzt nicht, was du mir sagen willst.. Einen Adressraum im Heap zu reservieren kann im worst case jedenfalls Minuten dauern, und im Besten Fall sicher einige Instruktionen.

Ciao
Sei stets geduldig gegenüber Leuten, die nicht mit dir übereinstimmen. Sie haben ein Recht auf ihren Standpunkt - trotz ihrer lächerlichen Meinung. (F. Hollaender)

n0_0ne

1x Contest-Sieger

  • Private Nachricht senden

12

23.06.2009, 07:23

Ich habe mich was die performance betrifft wahrscheinlich falsch ausgedrückt. Ich bezog mich da auf Call by Value, wobei ja kopien auf dem Stack angelegt werden. Und das ist langsamer als das übergeben einer Referenz (ich hoffe man zählt doch auch pointer zu referenzen?), auf die man dann direkt zugreift und verändern kann.

Und was die 4GB und 64 Bit angeht, war mir das auch klar, aber es war auch einfach nur eine Beispielzahl, ich hätte auch 535GB schreiben können :D

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

13

23.06.2009, 09:44

Zitat von »"n0_0ne"«

Ich habe mich was die performance betrifft wahrscheinlich falsch ausgedrückt. Ich bezog mich da auf Call by Value, wobei ja kopien auf dem Stack angelegt werden. Und das ist langsamer als das übergeben einer Referenz (ich hoffe man zählt doch auch pointer zu referenzen?), auf die man dann direkt zugreift und verändern kann.


Hängt stark davon ab was du da übergeben willst. Erstens einmal ist Call by Reference in C/C++ auch nur Call by Value, nur dass halt eine Referenz auf das Original am Stack liegt und nicht eine Kopie des Objektes an sich.
Mit "schneller" wär ich in dem Context vorsichtig, die Bremse ist nicht der Stack sondern die Tatsache dass große Objekte eben lang zu kopieren brauchen. Dabei sollte man aber bedenken dass der Zugriff auf ein Objekt über einen Pointer ebenfalls zusätzlichen (wenn auch kleinen) Overhead bedeutet.

WhiteMike

Alter Hase

  • »WhiteMike« ist der Autor dieses Themas

Beiträge: 507

Wohnort: Ulm

Beruf: Schüler

  • Private Nachricht senden

14

23.06.2009, 18:55

Zitat von »"Helmut"«


Wenn der Heap in den Stack reinwachsen könnte, würde undefiniertes Verhalten entstehen. Das OS verhindert das natürlich.


Niemand hat behauptet, dass der Heap in den Stack reinwächst. Wie kommst du überhaupt drauf?

Aber meine Frage hat sich jetzt geklärt.
Die wachsen in entgegengesetzte Richtungen aufeinander zu, weil man eben nicht weiß, wie groß sie sein werden. Ganz einfach.

Mit freundlichen Grüßen,
WhiteMike

Werbeanzeige