Останнім часом, коли я писав C або C ++, я оголошу всі свої змінні на стеці лише тому, що це варіант, на відміну від Java.
Однак я чув, що погана ідея оголошувати великі речі на стеці.
- Чому саме це так? Я думаю, що переповнення стека пов'язане, але мені не дуже зрозуміло, чому це відбувається.
- Скільки речей на стеку занадто багато?
Я не намагаюся розміщувати 100 МБ файлів на стеці, лише десяток кілобайтних масивів, щоб використовувати їх як буфери рядків або що завгодно. Це занадто багато використання стека?
(Вибачте, якщо дублікат, пошук стека продовжував давати посилання на переповнення стека. Немає навіть тегу стека викликів, я просто використав абстрактний.)
std::vector<int>
змінна не з'їсть багато місця у стеці, більшість даних знаходиться в купі.