Из того, что я узнал о распределении динамической памяти, куча, похоже, представляет собой обильный пул памяти, который вы можете использовать столько, сколько хотите. Мой вопрос: почему бы вам просто не использовать кучу переменных и объектов и забыть о стеке?Зачем использовать стек? Почему бы просто не куча? - C/C++
0
A
ответ
3
Распределение в стеке «бесплатно» с точки зрения производительности. Распределение кучи относительно дорого.
Кроме того, концептуально это позволяет легко отбрасывать объекты сразу после выхода из сферы действия.
0
- Стек может сохранить пространство
- Мы используем кучу в первую очередь, когда мы хотим контролировать время жизни объекта, выделяя временный буфер на динамической памяти, которая не используется после окончания функции (скажем) отходы память кучи, которую можно использовать повторно.
- Мы используем кучу в первую очередь, когда мы хотим контролировать время жизни объекта, выделяя временный буфер на динамической памяти, которая не используется после окончания функции (скажем) отходы память кучи, которую можно использовать повторно.
- Стек может быть быстрее, чем кучи
- Процесс выделения памяти в стеке постоянна (несколько машинных команд, вставленных компилятором во время связывания) и быстро. Распределение памяти в куче происходит медленнее (вызов функции glibc и процедура поиска), особенно если она фрагментирована.
- Процесс выделения памяти в стеке постоянна (несколько машинных команд, вставленных компилятором во время связывания) и быстро. Распределение памяти в куче происходит медленнее (вызов функции glibc и процедура поиска), особенно если она фрагментирована.
Я предпочел бы стек, когда мне нужна значительная память для выполнения одного расчета и проект предусматривает проведение многих таких расчетов. Я бы не фрагментировал память с помощью кучи.
Достаточно использовать стек, если он не превышает нескольких сотен байтов, что-то еще может попытаться перезаписать другие сегменты вашего процесса, сбрасывая его с исключением.
Смежные вопросы
- 1. Почему бы просто не использовать random_device?
- 2. Почему бы нам просто не использовать таблицы больше?
- 3. Зачем использовать стек вместо кучи?
- 4. Куча резьбы и стек
- 5. Почему байты существуют? Почему бы нам просто не использовать биты?
- 6. OOP и куча/стек
- 7. Почему бы вам использовать стек, если есть возможность переполнения стека
- 8. Зачем использовать сертификат x.509 для шифрования xml? Почему бы просто не передать через https?
- 9. Метод вызова JS, почему бы просто не использовать скобки?
- 10. Массив классов. Стек или куча?
- 11. куча и стек в eclipse
- 12. Почему бы просто не выделить тонну памяти?
- 13. javax.mail.SendFailedException - почему бы не просто SendException?
- 14. Стек и куча в PHP?
- 15. Блок + ARC, стек и куча
- 16. Многоуровневые указатели, стек или куча?
- 17. C++ стек и куча коррупции
- 18. Память распределяется: куча или стек?
- 19. Куча/стек и несколько процессов
- 20. Зачем использовать DoFSCommand, если можно просто getUrl?
- 21. Почему у нас только две структуры данных «стек» и «куча»?
- 22. Почему бы просто не использовать sp для всего, а не для dp?
- 23. Зачем вам использовать стек LIFO над массивом?
- 24. Почему бы просто не объявить все @properties сильными и нулевыми?
- 25. Почему стек и куча необходимы для распределения памяти?
- 26. Почему бы не использовать var в начале?
- 27. Память API: куча или стек? (C++)
- 28. Куча и стек в программировании на С
- 29. шаблоны расположения папок на стек и куча
- 30. Какова цель типа данных char в C++? Почему бы просто не использовать строки?
Быстрый Google появился, например: http://gribblelab.org/CBootcamp/7_Memory_Stack_vs_Heap.html - несколько хороших плюсов и минусов, перечисленных для стека против кучи. – faffaffaff
На самом деле есть аналогия: зачем писать кучу отдельных функций и называть их «главными»? Почему бы просто не написать весь код в 'main'? – jxh
См. [Этот пост] (http://stackoverflow.com/questions/79923/what-and-where-are-the-stack-and-heap?rq=1) для справок о 'Stack' и' Heap '. –