Gast
#5062714
Hallo,
um mein Wissen etwas zu festigen, mal wieder eine Frage an die Profis.
Worin liegt der Unterschied zwischen folgenden Ansätzen.
Im Main.cpp File:
----------------------------------------------------------
KlasseA *oKlasseA = new Klasse();
void main(void)
{
}
-----------------------------------------------------------
Dieses Objekt "oKlasseA" wird, soweit ich weiß, zur Laufzeit des
Programms im HEAP Speicher angelegt.
Bedeutet, es muss mit delete gelöscht werden, ansonsten wird "sein" HEAP
Speicher nicht freigegeben.
Da ich denke, dass folgendes nicht sauber ist, will ich betonen, dass es
mir nur ums Verständnis von HEAP geht.
Angenommen ich erstelle obiges Objekt in einer Funktion C welche von
Funktion B aufgerufen wird. Funktion C gibt einen Zeiger auf das Objekt
im Heap an Funktion B zurück. Das Objekt wurde auf dem Heap erzeugt aber
wird nie gelöscht.
Funktion B könnte doch nun auf dieses Objekt im Heap über den Zeiger
zugreifen? Die Funktion in der es erzeugt wurde ist nicht mehr da, aber
das auf dem Heap erzeugte Objekt wurde ja nicht gelöscht.
Dann noch eine Frage zu folgendem:
Im Main.cpp File:
----------------------------------------------------------
int a = 2; //Variante A
void main(void)
{
int b = 3; //Variante B
for(;;)
{
}
}
-----------------------------------------------------------
Wo wird die Variable a und wo Variable b angelegt?
Wird Variable b auf dem Stack und Variable a im RAM angelegt?
Mir ist klar, dass letztens alles auf dem RAM liegt.... Stack ist ein
Stapelspeicher.
Sollte man Variante A oder Variante B nutzen oder macht das keinen
Unterschied?
HEAP wird zur Laufzeit belegt und diese Objekte sollten gelöscht werden,
wenn sie nicht mehr benötigt werden.
STACK wird bei Variablen in Funktionen benötigt .... Also, wenn eine
Funktion eine andere aufruft, dann werden die Variablen in der
aufrufenden Funktion wohl in den Stapelspeicher gegeben und beim
Rücksprung wieder herausgeholt?
Und alles andere was Modulglobal angelegt ist, landet fest im Ram?
Könnt ihr das so bestätigen?