In letzter Zeit, als ich C oder C ++ geschrieben habe, werde ich alle meine Variablen auf dem Stapel deklarieren, nur weil es eine Option ist, im Gegensatz zu Java.
Ich habe jedoch gehört, dass es eine schlechte Idee ist, große Dinge auf dem Stapel zu deklarieren.
- Warum genau ist das so? Ich nehme an, dass ein Stapelüberlauf vorliegt, bin mir aber nicht ganz sicher, warum das passiert.
- Wie viel Zeug auf dem Stapel ist zu viel?
Ich versuche nicht, 100 MB-Dateien auf den Stapel zu legen, sondern nur ein Dutzend Kilobyte-Arrays, die als String-Puffer verwendet werden sollen, oder was auch immer. Ist das zu viel Stack-Nutzung?
(Tut mir leid, wenn Duplikate vorhanden sind und die Suche nach Stack weiterhin Verweise auf Stack Overflow enthält. Es gibt nicht einmal ein Call-Stack-Tag, ich habe nur das abstrakte verwendet.)
std::vector<int>
Variable beansprucht nicht viel Stapelspeicher, da sich die meisten Daten im Heap befinden.