Es ist ein schlechter Stil, die Heap-Zuweisung zu verwenden, wenn Sie sie nicht wirklich brauchen. Vor allem in einfachen Programmen.
Stapelzuweisungen sind billiger als Heapzuweisungen. Zuteilung und Freigabe von Stapel sind nur einfache Zählerinkremente und dekrementiert auf Funktion (oder genauer: Bereich) -Eintritt / -Ausgang. Heap-Zuordnungen bedeuten, einen ausreichend großen Speicherblock in einem möglicherweise fragmentierten Adressraum zu finden. Aus diesem Grund sind Stapelzuweisungen fast immer vorzuziehen.
Die Hauptgründe dafür, den Stapel nicht zu verwenden, sind:
Wenn wir uns, wie Sie sagten, auf SIMPLE Programme konzentrieren, dann ist es nicht so schlimm :) Sie können sich auch C99 Arrays mit variabler Länge ansehen (hier ein einfaches Beispiel: Ссылка ).
Der Hauptvorteil des Heapspeichers besteht darin, dass Sie ihn dynamisch zuordnen können. Wenn Sie die Größe der benötigten Variable nicht kennen: Heap it.
Wenn Ihr Programm einfach ist, müssen Sie möglicherweise keine Variable auf dem Heap zuweisen; aber die Wahl hängt nicht von der Komplexität des Programms ab, es hängt von der Notwendigkeit ab, die Sie von der Variable haben. Wenn Sie die Variable während des gesamten Arbeitsablaufs über mehrere Funktionen aufrufen / ändern müssen, ist es auf dem Heap besser. Du wirst es befreien, wenn du es nicht mehr brauchst. Wenn die Variable nur eine Optionsstruktur oder ein Zähler ist, ist der Stack dafür perfekt.
Nein. Es sei denn, Sie haben Variablen mit einer nicht festen Größe. Ein solcher Code könnte einen Stack-Überlauf ziemlich schnell verursachen.
Tags und Links c memory memory-management