Ostatnio, gdy piszę C lub C ++, zadeklaruję wszystkie moje zmienne na stosie tylko dlatego, że jest to opcja, w przeciwieństwie do Javy.
Jednak słyszałem, że deklarowanie dużych rzeczy na stosie jest złym pomysłem.
- Dlaczego dokładnie tak jest w tym przypadku? Sądzę, że w grę wchodzi przepełnienie stosu, ale nie bardzo wiem, dlaczego tak się dzieje.
- Ile rzeczy na stosie to za dużo?
Nie próbuję umieszczać 100 MB plików na stosie, tylko kilkanaście kilobajtów tablic do wykorzystania jako bufory łańcuchów lub cokolwiek innego. Czy to zbyt duże zużycie stosu?
(Przepraszam, jeśli zduplikowane, wyszukiwanie stosu wciąż zawiera odniesienia do Przepełnienia stosu. Nie ma nawet znacznika stosu wywołań, po prostu użyłem abstrakcyjnego).
std::vector<int>
Zmienna lokalna nie zje dużo miejsca na stosie, ponieważ większość danych jest w stercie.