что происходит, когда вы вызываете malloc () в системе Unix - PullRequest
2 голосов
/ 27 апреля 2011

Функция библиотеки malloc () внутренне вызывает системный вызов brk () или sbrk (), который выделяет память для области данных, поэтому локальные статические переменные и глобальные переменные будут выделять память из кучи, увеличивая эффективный размер данных region.nowМой вопрос заключается в том, что именно происходит, когда я выделяю память для int * a?, которая является локальной переменной.возможно, у меня неправильное представление, пожалуйста, дайте мне знать, если таковые имеются. спасибо

Ответы [ 2 ]

1 голос
/ 27 апреля 2011

int *p сама является локальной переменной, которая является указателем (в наши дни: обычно четыре или восемь байтов, обычно в стеке или в регистре). Когда вы делаете p = malloc(...), вы выделяете память (в куче - или то, что в наши дни условно называют «кучей», даже если куча не является структурой, используемой для управления свободной памятью) и назначаете указатель на эту память в p.

0 голосов
/ 27 апреля 2011

Когда вы звоните malloc(), вы получаете доступ к требуемому объему памяти или возвращается значение NULL. То есть все , что гарантировано. Все остальное зависит от реализации. Механизм, с помощью которого вы получаете доступ к этой памяти, может быть весьма разнообразным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...