*** Für dynamische Speicheranforderungen ist das "Konzept" nicht gut geeignet. Mit auto ist die Speicherklasse mit diesem Namen in der Programmiersprache C gemeint. Ein Stack ist eine mögliche und sehr natürliche Implementation dieser Speicherklasse, aber nicht die einzig notwendige. Von der sehr prozessorspezifischen Sichtweise abgesehen, dass Allokation auf dem Stack schneller gehen soll, bleibt das Argument, dass Objekte, deren Lebensdauer an den Gültigkeitsbereich eines Bezeicheners gebunden ist, nicht vergessen werden können. Ob die Implementation über einen Stack realisiert ist, spielt dabei keine Rolle. Ja, die Entscheidung über die Größe des benötigten Puffers trifft bei diesem Konzept immer die aufrufende Funktion, aber mit einem VLA in C90 kann sie diese Entscheidung datenabhängig treffen -- kw |
*** Für dynamische Speicheranforderungen ist das "Konzept" nicht gut geeignet. Mit auto ist die Speicherklasse mit diesem Namen in der Programmiersprache C gemeint. Ein Stack ist eine mögliche und sehr natürliche Implementation dieser Speicherklasse, aber nicht die einzig notwendige. Von der sehr prozessorspezifischen Sichtweise abgesehen, dass Allokation auf dem Stack schneller gehen soll, bleibt das Argument, dass Objekte, deren Lebensdauer an den Gültigkeitsbereich eines Bezeicheners gebunden ist, nicht vergessen werden können. Ob die Implementation über einen Stack realisiert ist, spielt dabei keine Rolle. Ja, die Entscheidung über die Größe des benötigten Puffers trifft bei diesem Konzept immer die aufrufende Funktion, aber mit einem VLA in C99 kann sie diese Entscheidung datenabhängig treffen -- kw |
Wie gehen deine Programm damit um, wenn sie nicht die einzigen sind, die zu einem bestimmten Zeitpunkt laufen?
Wie übergibst du Speicherbereiche zurück an die rufende Funktion, wenn du die Bereiche ausschließlich auf dem lokalen Stack hast?