Мы знаем, что когда функция называется блоком памяти, вставляется в стек, и когда функция заканчивает свое задание, теперь выдается блок памяти, который был нажат ранее. Правильно ли это во всех обстоятельствах. Даже если функция содержит объявление статических переменных? Если да, то как статические переменные сохраняют свои значения? Являются ли они зарезервированы для хранения памяти в куче, а не в стеке?Каково пространство памяти для статической переменной, объявленной внутри функции?
ответ
Статические локальные переменные не живут в стеке, они живут в той же памяти, что и глобальная переменная. .bss - это память, в которой будут находиться глобальные переменные, которые неинициализированы. .data могут содержать переменные, объявленные с начальным значением.
Могу я просто сказать, что им присваивается пространство памяти в куче. Или есть что-то, что отличает кучу, а .bss и .data – bubble
куча обычно относится к пространству, используемому для динамического распределения через malloc, поэтому нет, ваша статическая переменная не будет потреблять пустое место – TJD
, поэтому вы имеете в виду, что существует 3 или более типов пространств памяти , Куча, стек и тот, в котором глобальным или статическим переменным присваивается пространство. Я прав ? – bubble
Объект, объявленный с ключевым словом static
, имеет статическую продолжительность хранения. Объект со статической продолжительностью хранения не освобождается, когда выполнение выходит из блока, где он определен. Время жизни статического объекта - это время жизни программы: объект создается при запуске программы и уничтожается при выходе из программы.
ya, но мой вопрос здесь о пространстве, которое он потребляет, а не о времени – bubble
@bubble это не указано языком, поскольку язык не требует стека. Однако при реализации со стеком объект 'static' обычно просто не сохраняется в стеке. В Unix вы можете ожидать, что объекты 'static' будут храниться в .bss, .data или .rodata. – ouah
- 1. Каково значение статической переменной, объявленной внутри функции?
- 2. вызов переменной, объявленной внутри функции
- 3. Использование переменной, объявленной внутри функции вне ее
- 4. PHP статической переменной внутри функции
- 5. Объем объявленной функции внутри функции
- 6. Доступ к переменной, объявленной внутри функции внутри класса (PHP)
- 7. Размещение статической переменной памяти
- 8. Каково пространство памяти массива в ядре OpenCL?
- 9. удаление памяти для статической переменной в C++
- 10. статической переменной внутри функции члена базового класса
- 11. определение статической переменной внутри функции в angularJS
- 12. Какова полезность объявления статической переменной в функции?
- 13. Доступ к статической переменной в кавычках внутри статической функции
- 14. Разница между статической глобальной переменной и статической переменной внутри fucntion
- 15. Как получить доступ к переменной внутри функции, объявленной как переменная?
- 16. Ошибка анализа с переменной, объявленной вне функции
- 17. Почему нельзя присваивать значение внутри функции переменной, объявленной вне (globaly)?
- 18. Нестатический параметр внутри статической функции
- 19. Что память, используемая для переменной, объявленной вне метода или функции
- 20. Каково использование типа данных переменной
- 21. Использование статической переменной в статической функции
- 22. Обеспечение статической памяти для параметра функции
- 23. Как изменить значение переменной, объявленной из функции?
- 24. Повторное использование объявленной переменной в функции Postgres
- 25. C++ для доступа к частной статической переменной в статической функции
- 26. же имя для статической переменной в статической функции члена
- 27. Вызов статической функции от переменной
- 28. Каково пространство виртуальной памяти пользовательского пространства для процесса x86_64 Linux?
- 29. Когда пространство памяти выделяется переменной?
- 30. Задача статической переменной и функции
Я не знаю, что такое .bss и .data и как они связаны с кучей и стека. – bubble
Возможный дубликат [Статическая и глобальная переменная в памяти] (http://stackoverflow.com/questions/2421254/static-and-global-variable-in-memory) вместе с тоннами других. Обратите внимание на все «связанные» вопросы в правой части экрана. –
@Brian ответ на этот вопрос конкретно не говорит, если статические переменные назначаются в кучу. Также мне хотелось бы, чтобы кто-нибудь мог ссылаться на любую доверенную ссылку – bubble