webForumDet fria alternativet

Heap och stack

C/C++

3 svar · 861 visningar · startad av N-Foe

Medlem sedan juni 200384 inlägg
Frågan#1

Har en C++ bok som bara nämner Stacken och Heapen i förbi farten.. Beskriver aldrig vad de är eller används till! Någon som kan ge en mer detaljerad beskrivning?

En sak till: När ska man allokera med "new"? Jag kommer från Java-programmering och där allokeras som bekant allt med "new"..

Kan man inte i som i Java deklarera en array som attribut till en klass och sen initera och bestämma storleken när den först ska användas?

Medlem sedan mars 20007 896 inlägg
#2

new använder du när du vill allokera minne dynamiskt, alltså under programmets körning. Med new allokerar du minne på heapen, använder du inte new allokerar du minne på stacken. Jag hittade en rätt intressant tråd, http://www.webforum.nu/showthread.php?s=&forumid=91&threadid=27590&highlight=heap, där devloper belyser det hela med sin fantastiska kunskap. :)

Medlem sedan juni 200384 inlägg
#3

Kan man inte i som i Java deklarera en array som attribut till en klass och sen initera och bestämma storleken när den först ska användas?

Självklart löser man detta med en pekare och allokerar arrayn dynamiskt.

int* a

a = new int[size];

delete[] a;
Medlem sedan mars 20034 471 inlägg
#4

Lokala variabler som bara lever inom metoden ifråga och inte returnerar ut värdet av denna "lokala" variabel kan skapas utan new. Då slängs de och minnet återanvänds när metoden är klar. Variabler som ska leva längre än så måste allokeras på heapen med new.

261 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)