Prinzipiell immer. Es gibt Ausnahmen, in denen es nötig / sinnvoll / besser ist sie auf dem Stack zu erstellen, aber die sind sehr selten. Konkret fällt mir jetzt nicht mal ein Beispiel ein.

Grundsätzlich gilt, dass größere Datenmengen, und das sind structs ja in der Regel, immer besser auf dem Heap aufgehoben sind. Es ist natürlich auch eine Frage der gewünschten Lebensdauer der Daten. Meistens ist diese Lebensdauer länger als der Scope einer Funktion und dann bleibt schon nur noch der Heap. Wenn Du einfach mal nach Heap und Stack googlest wirst Du Tonnen an Informationen zu dem Thema finden. Nicht vergessen den allokierten Speicher mit free später wieder freizugeben, sonst bekommst Du Memory leaks. Gute Angewohnheiten sind es ausserdem mit malloc / realloc allocierten Speicher immer mit memset(adresse,0,länge) zu initialisieren und nach dem Freigeben von Speicher mit free den entsprechenden Pointer auf NULL zu setzen. Kann einem im Zweifeslfall eine Menge Kopfschmerzen ersparen.


Always learn from history, to be sure you make the same mistakes again...