2013-03-17 11 views

Antwort

5

Da sie auf dem Stapel deklariert sind, wenn Sie sie lokal deklarieren - und wenn der Stapel zu groß wird, haben Sie einen Stapelüberlauf und Ihr Programm wird abstürzen.

6

, weil sie auf den Stapel gehen, und es gibt nur eine begrenzte Menge an Speicherplatz auf dem Stapel,

0

Obwohl es möglich ist, den Stapelspeicher im Voraus zu einem gewissen Grad einzustellen, braucht man auch die Möglichkeit zu prüfen, die gleiche Funktion von einem Ausführungspfad durch die Funktion aufrufen. Zum Beispiel:

void a() { int a[10000000]; b(); } 
void b() { d(); c(); } 
void c() { a(); } 

Da diese Analyse nicht immer einfach ist, kann es zum Überlauf kommen.

2

der Stapel ist klein (etwa 4 kb), aber Halde mehr Größe Variante Maschine hat, weist das Array dynamisch mit Zeigern malloc in int(),

sich bewusst seinen Zeiger und Glück

0

Der Stapel und der Heap können eine beliebige Größe haben (der Stapel kann 100 Mal größer sein als der Heap, wenn die Implementierung ihn so konfiguriert), aber der Stapel ist im Allgemeinen sehr klein und wird bei großen Zuordnungen überlaufen - besonders in rekursiven Funktionen.

Verwandte Themen