Как я освобождаю память, полученную sbrk ()?

Я сделал, чтобы таможенный распределитель функционировал который использование sbrk (), чтобы получить память. Как я выпускаю эту память, когда она больше не необходима?

Есть ли функция, эквивалентная свободному () для malloc ()?

или я должен использовать кирпич (), чтобы установить конец сегмента данных?

15
задан user238707 12 January 2010 в 20:09
поделиться

2 ответа

Вам нужно использовать BRK или SBRK снова, чтобы уменьшить.

В конце концов единственный способ изменить объем памяти (кроме MMAP, подобных SESCalls), является увеличение или уменьшение кучи, поэтому вы перемещаете его с SBRK или БРК И вы двигаете его с помощью БРК или SBRK с отрицательным приращением.

25
ответ дан 1 December 2019 в 02:55
поделиться

Не используйте brk и sbrk. Практически невозможно узнать, какие библиотечные функции могут вызвать malloc, и они могут измениться со временем, так что даже если ваша программа работает сейчас, она может сломаться, когда кто-нибудь обновит libc. Они были исключены из POSIX по очень веской причине.

0
ответ дан 1 December 2019 в 02:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: