Frage zur Initialisierung
-
Wenn du sowas meintest:
auto *bmw = new bmw(1,2,3);Ersteres leigt auf dem Stack, letzeres auf dem Heap. Auch musst du bei new immer den Speicher selbst wieder freigeben (delete).
Achja: auto ist ein seehr schlecht gewählter Bezeichner!

grüße
-
Ah, das erklärt einiges, vielen Dank an euch beide

Eine Frage hätt ich da noch: was ist der Unterschied zwischen Heap und Stack, abgesehen von der Initialisierung mit 0.
-
Der Stack is sehr begrenzt (ca 1MB) dafür wird der dort verwendete Speicher vom Programm selbst verwaltet. Der Heap bietet ungleich viel mehr Speicher und muss von Programmierer verwaltet werden (Memory-Leak-Gefahr).
grüße
-
Hallo,
Das der Heap nur sehr klein ist, kann man nicht allgemein sagen.
MFG winexec*
-
Der Stack ist klein und das kann man schon allgemein sagen.
grüße
-
wenn man's wirklich 'allgemein' meint, kann man garnix über die grössen sagen

-
Auch nicht das im allgemeinen mehr Heap wie Stack verfügbar ist ?
-
Knuddlbaer schrieb:
Auch nicht das im allgemeinen mehr Heap wie Stack verfügbar ist ?
nö, auch das nicht.
-
warum ?
-
Man kann die Größe einstellen, allerdings kann man "im Normalfall" sagen das der Stack wesentlich kleiner ist als der Heap.
Außerdem haben Variablen auf dem Stack nur endliche Lebensdauern (wärend dem Programmablauf), was z.T. weitere Nachteile mit sich bringt.
grüße
-
David_pb schrieb:
...
Außerdem haben Variablen auf dem Stack nur endliche Lebensdauern (wärend dem Programmablauf), was z.T. weitere Nachteile mit sich bringt.grüße
Na, wenn man keine Memory leaks eingebaut hat (und wenn man ein vernündtiges Betriebssystem hat
) , haben auch Heapvariablen eine endliche Lebensdauer ... auch "während dem Programmablauf". 
Gruß,
Simon2.
-
Jaja, war schlecht ausgedrückt. Variablen auf dem Stack gibts nur solang bis der entsprechende Scope verlassen wird. Variablen auf dem Heap können darüber hinaus genauso gültig sein.
grüße