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