Wo befinden sich die Membervariablen wenn ich die Instanz mit new anlege?



  • @7H3 N4C3R
    Mach mich nicht schwach... im allgemeinen drüfte es extrem schwierig sein den für den Stack benötigten Speicher im Voraus festzulegen bzw. zu berechnen.
    Und selbst wenn, wozu sollte das ganze gut sein außer die Entwickler und die Anwender zu ärgern?
    Gibt gar keinen Grund den Stack auf einen festen Wert zu begrenzen, der in keinem Zusammenhang mit dem verfügbaren RAM steht.

    Die Compiler und Linker-Einstellungen dienen wohl eher dazu die Anfangsgröße festzulegen, die direkt beim Programmstart reserviert werden soll.
    🙂



  • Mathias schrieb:

    Die Compiler und Linker-Einstellungen dienen wohl eher dazu die Anfangsgröße festzulegen, die direkt beim Programmstart reserviert werden soll.
    🙂

    Ist nunmal so 😉 Anfangs- & Max. Größe wird fix gesetzt. Gelesen in "Windows Multithreading" vom mitp Verlag.
    Das dient bespielsweise dazu, dass eine außer Kontrolle geratene Rekursion nicht sämtliche Ressourcen deines Systems verbrezelt.


  • Mod

    Mathias schrieb:

    Gibt gar keinen Grund den Stack auf einen festen Wert zu begrenzen, der in keinem Zusammenhang mit dem verfügbaren RAM steht.

    Dafür gibt es viele gute Gründe. Nicht zuletzt den, dass der stack ein zusammenhängendes Stück Speicher (im virtuellen Adressraum) sein muss. Und herumkopieren, wenn er vergrössert werden müsste, ist nicht.



  • Was mich wundert ist, woher weisst Du so genau, dass genau hier der Fehler auftritt und warum weisst Du, dass dies die Ursache ist.

    Es kann durchaus sein, dass der Stack schon woanders ueber-/gefuellt wird und dieser kl. Aufruf nur "das Fass zum Ueberlaufen bringt.

    Mein erster Verdacht sind bei solchen Fehlern immer amoklaufende Rekursionen.



  • Mathias schrieb:

    Gibt gar keinen Grund den Stack auf einen festen Wert zu begrenzen, der in keinem Zusammenhang mit dem verfügbaren RAM steht.

    Bei Multithreading gehts nicht anders. Ansonsten hast du IMHO technisch gesehen recht.



  • Artchi schrieb:

    Nein, die Frage ist garnicht so dumm.

    Nun, darüber lässt sich streiten. 😉

    Artchi schrieb:

    Immerhin hat er ja laut Syntax 900000 chars als Stackvariable definiert.

    Ach ja? Woran siehst du denn, dass es eine Stackvariable ist?

    Artchi schrieb:

    Jetzt völlig unabhängig vom Instanzierungskontext.

    Das ist aber genau der springende Punkt. Alles was du siehst, ist eine leblose Hülle, die einen Speicherbereich von 9000000 char's beschreibt. Zu diesem Zeitpunkt hast du weder eine Variable, und erst recht keine Stackvariable. Erst bei der Erzeugung eines Objektes wird anhand der Art der Definition auch der Speichertyp festgelegt.



  • Das ist aber genau der springende Punkt. Alles was du siehst, ist eine leblose Hülle, die einen Speicherbereich von 9000000 char's beschreibt. Zu diesem Zeitpunkt hast du weder eine Variable, und erst recht keine Stackvariable. Erst bei der Erzeugung eines Objektes wird anhand der Art der Definition auch der Speichertyp festgelegt.

    ich glaube, das weis er ;). Er wollte damit nur sagen, dass die syntax genauso wie bei einem array ist, welches immer auf dem stack liegt, und dass dieser Gedanke deshalb nicht so abwegig ist 😉



  • otze schrieb:

    ich glaube, das weis er ;).

    Die Erklärung war ja auch eher für den Threadersteller gedacht. 😉



  • groovemaster schrieb:

    otze schrieb:

    ich glaube, das weis er ;).

    Die Erklärung war ja auch eher für den Threadersteller gedacht. 😉

    dan darfst du auf ein zitat nicht mit "du" antworten 😉



  • Deshalb bleibt der Kontext trotzdem unbezogen. 😉



  • 🙄 🙄 🙄 🙄 🙄 🙄 🙄


Anmelden zum Antworten