Понимание C malloc и sbrk ()

Я пытаюсь понять разницу между malloc и sbrk в C и то, как они соотносятся друг с другом. Из того, что я понимаю, malloc и sbrk – почти то же самое, но я читал, что malloc использует sbrk для выделения памяти. Это действительно смущает, может кто-нибудь объяснить это мне?

Например, в этой программе malloc вызывает sbrk? если он так просто вызывает sbrk каждый раз, когда он вызывается, поэтому для этого примера 10 раз?

int main(int argc, char **argv) { int i; void *start_pos, *finish_pos; void *res[10]; start_pos = sbrk(0); for (i = 0; i < 10; i++) { res[i] = malloc(10); } finish_pos = sbrk(0); return 0; } 

Спасибо,

sbrk запрашивает больше памяти из операционной системы. Это довольно низкоуровневая функция и не очень гибкая.

malloc использует sbrk , но более гибкий. Как правило, malloc запросит sbrk для больших кусков памяти, а затем выложит куски этих больших кусков. Поэтому большинство вызовов в malloc не приведет к вызовам sbrk .

malloc использует sbrk системный вызов, используемый для изменения сегмента данных. K & R C имеет приложение, которое проходит через реализацию malloc , free используя sbrk sys.