LINUX.ORG.RU

Системный вызов brk не работает.

 , ,


0

2

Пишу на Android (aarch64). 4 Гб оперативки + 2 Гб swap. Захотел проверить, какой предел для расширения кучи (через brk). Пытаюсь увеличить аж на 10 гигов – и всё равно brk возвращает не код ошибки, а новый адрес.

Насколько мне известно, должно возвратиться 0, ежели память не может быть выделена. Во всяком случае, так работает библиотечная обёртка brk(). А если это не так, то возможно ли иным способом проверить выделена ли память по факту? Как?

P.s. прошу про преимущества mmap не распыляться: хочу разобраться с вызовом brk, раз его ещё не выпилили из ядра.


Потому что brk() это древний, устаревший, системный колл, который не учитывает вообще существование виртуальной памяти.

В современных системах память тебе возвращается виртуальная, и еще не инициализированная. Зато вот если ты пойдешь по страницам, допустим в каждую будешь записывать по нулю, вот тогда то и наткнешься на лимиты.

lovesan ★★
()

Пытаюсь увеличить аж на 10 гигов – и всё равно brk возвращает не код ошибки, а новый адрес.

Ты в 2024 не слышал про overcommit?

PS: название топика вопиюще неверное. brk как таки работает, всегда.

no-such-file ★★★★★
()
Последнее исправление: no-such-file (всего исправлений: 1)