Re: Heap und Stack

Werner Modenbach <[email protected]>
Newsgroups gmane.linux.redhat.general.german
Organization ALC Computertechnik GmbH
Message-ID <[email protected]>
Hallo Jörg,

der Stack ist der Speicherbereich für variablen, die als lokale Variablen von 
Funktionen oder von Parametern benutzt wird. Mit jedem Funktionsaufruf 
reserviert der Compiler auf dem Stack Platz für diese Werte.
Der Platz wird beim Verlassen einer Funktion wieder freigegeben. D.h. mit 
jedem Aufruf wächst der "Stapel" der reservierten Bereiche.

Auf dem Heap werden alle Variablen reserviert, die mit "new" angelegt werden. 
Diese bleiben auch über das Ende einer Funktion so lange erhalten, bis sie 
explizit per "delete" freigegeben werden. Du kannst also in einer Funktion 
ein Objekt auf dem Heap allokieren, und dieses per Zeiger zurückgeben. Der 
Heap wird dadurch natürlich wie eine Platte fragmentiert und es gibt 
spezielle Programmteile, die den Heap aufräumen.

Beispiel:
FALSCH !!! ist 

int * test() {
	int a=0;
	return &a;
}

RICHTIG ist

int * test() {
	int *a = new int();
	*a = 0;
	return a;
}

Und wenn man dann die "delets"s vergißt nennt man das ein Memoryleak :-))

- Werner -


Am Dienstag, 12. Oktober 2004 17:08 schrieb Jörg Linnenkohl:
> Hallo,
>
> mal 'ne Frage an die Hardcore-Linuxer:
>
> Was ist der Unterschied zwischen Heap und Stack, deren
> Größe ich mit ulimit setzen kann?
> Kann ich ein C-Programm schreiben, daß Stack und Heap sich
> gegenseitig überschreiben?
>
> Viele Grüße
>
> Jörg Linnenkohl
> __________________________
> WM Gruppe
> Anwendungsentwicklung/Application Development
>
> Düseldorfer Straße 16
> D-60329 Frankfurt am Main
>
> Tel:   +49 69 2732-476
> Fax:   +49 69 2732-7476
> Email: [email protected]
>
> _______________________________________________
> redhat-list-de mailing list
> [email protected]
> https://www.redhat.com/mailman/listinfo/redhat-list-de
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.