C++ Anfänger: Objekte erzeugen?



  • Artchi schrieb:

    C++ ist eine HiLevel-Sprache, und wenn wir von Stack reden, ist das eine Hi-Level-Sicht. Wenn es nach deiner Diskussion geht, werden wir nie fertig, weil dann der nächste ankommt, und sagt das seine CPU das aber doch anders macht.

    Genau deshalb sollten wir ja überhaupt nicht von Stack reden.
    Die Hi-Level Abstraktion ist automatic vs dynamic.

    Die Maximalgrösse des Stacks unter Win32 ist übrigens 1GB, wobei die Grösse vom Linker festgelegt wird, mit einem Defaultwert von 1MB.



  • Also Automatic anstatt Stack als Begriff kann ich ja noch konform gehen. Soll mir Recht sein.

    @gezwungen! In Java wird alles (Objekte) auf den Heap gepackt, weil es keine statische Kompilierung gibt. Weil man weiß nie vorher, wie groß ein Objekt ist. Bei C++ brauchst du z.B. die Header-Dateien genau dafür, und wehe du änderst eine Header... das ist bei Java/.NET nicht so.
    Es soll aber bald in Java die sogenannten Value-Types (?) geben, die werden auch auf dem Stack... ehm, automatischen Speicher abgelegt werden.

    Bei Java kann man auch nicht von dem einen GC-Verhalten sprechen, da es ja mehrere GC-Strategien gibt. Die Server-JVM macht in viel höherer Frequenz Speicherbereinigungen, damit diese möglichst nur kurz das System blockieren (damit der Server immer antwortfähig ist).
    Die Client-JVM dagegen springt nur selten an, dafür dauert eine Speicherbereinigung länger und blockiert sichtbar das Programm.

    Aber man kann sich in Java zwischen diesen und anderen GCs beim Start der JVM entscheiden.



  • Artchi schrieb:

    3b. Stack-Objekte immer dann wenn möglich, Heap-Objekte nur wenn nötig.

    Ist eh ein oft bewartetes Prinzip ... mein Fachlehrer in Drehen/Fresen meinte immer, den Schnittstahl so kurz wie möglich, aber so lange wie nötig einzuspannen ^^


Anmelden zum Antworten