Stack wird nicht freigegeben nach beender der Funktion
Verfasst: 28. Januar 2010 13:41
Hallo,
ihr könntet mir bei einer Verständnis frage behilflich sein.
In einer Funktion Erschaffe ich eine Variable und Instantiiere sie mit einem Wert : int a = 42;
Aus der Funktion gebe ich die Adresse der variable: return &a;
Ein Pointer nimmt diese Adresse auf : int *iptr =0;
iptr = funktion();
Nun Dereferenziere ich den Pointer und gebe den Inhalt aus : cout << *iptr << endl;
Auf dem Bildschirm wird 42 ausgegeben. Die Variable wurde auf dem Stack abgelegt und nach dem verlassen der Funktion wird der Reservierte platz nun wider frei gegeben.
Und genau das ist mein Problem, meiner Meinung nach sollte das eine Speicherverletzung sein und auf dem Bildschirm könnte alles stehen, aber da steht 42.
Warum 42?
ihr könntet mir bei einer Verständnis frage behilflich sein.
In einer Funktion Erschaffe ich eine Variable und Instantiiere sie mit einem Wert : int a = 42;
Aus der Funktion gebe ich die Adresse der variable: return &a;
Ein Pointer nimmt diese Adresse auf : int *iptr =0;
iptr = funktion();
Nun Dereferenziere ich den Pointer und gebe den Inhalt aus : cout << *iptr << endl;
Auf dem Bildschirm wird 42 ausgegeben. Die Variable wurde auf dem Stack abgelegt und nach dem verlassen der Funktion wird der Reservierte platz nun wider frei gegeben.
Und genau das ist mein Problem, meiner Meinung nach sollte das eine Speicherverletzung sein und auf dem Bildschirm könnte alles stehen, aber da steht 42.
Warum 42?