Свободное хранилище и куча: являются ли они разными сущностями в C ?
В C термины «свободное хранилище» и «куча» " часто используются как взаимозаменяемые для обозначения области памяти, в которой осуществляется динамическое распределение. Однако важно понимать, есть ли практическая разница между этими терминами.
Концептуальное различие
Исторически свободное хранилище представляло собой область памяти, зарезервированную для динамически выделяемых объекты с помощью операторов «new» и «delete». С другой стороны, куча представляла собой отдельную область, используемую «malloc» и «free» для распределения памяти на более низком уровне. Это различие было направлено на предотвращение смешивания различных механизмов управления памятью и потенциальных конфликтов. концептуальный. Составители обычно не проводят практического различия между этими двумя терминами. И «new», и «malloc» выделяют память из одной и той же базовой системы управления памятью.
Использование памяти
Хотя теоретически это возможно, маловероятно, что компилятор будет выделять память для «нового» и «malloc» в отдельных областях памяти. Оба механизма выделяют память в одной и той же области кучи. Однако стоит отметить, что некоторые компиляторы C могут предоставлять специфичные для компилятора параметры, позволяющие выделять память из определенных областей кучи.
Заключение
На практике термины «free-store» и «heap» функционально эквивалентны в C. Оба относятся к одной и той же области памяти, используемой для динамического распределения памяти. Различие между этими двумя терминами служит в первую очередь напоминанием о необходимости разделения использования слов «новый/удалить» и «malloc/free» для правильной организации кода. Это не жесткое разделение, которое влияет на фактическое поведение распределения памяти в C.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3