Как malloc() хранит метаданные?Динамическое распределение памяти
void* p;
void* q;
p = malloc(sizeof(char));
q = malloc(sizeof(int));
Я знаю, что возвращаемое значение р [0] указывает на начало выделенного блока памяти,
, чем если бы я итерацию и печать
р [-1], р [- 2] .... q [-1], q [-2] ....
или p [1], p [2], p [3], p [4] .... или q [1], q [2], q [3], q [4] ....
Я нахожу некоторую ценность, которая помогает malloc() хранить данные howether Я не могу понять именно то, что означает эти метаданные. Я знаю только, что некоторые из них предназначены для размера блока, для адреса следующего свободного блока, но я не могу найти в Интернете ничего больше
Пожалуйста, дайте мне некоторое подробное объяснение этой ценности?
Существует много реализаций malloc(), и они не все хранят метаданные одинаково. –
Пример широко используемой реализации GNU находится здесь: https://sourceware.org/git/?p=glibc.git;a=tree;f=malloc –
Это может быть опечатка, но ваши объявления 'p' и 'q' недействительны. Вам лучше использовать следующие 'void * p, * q;' – ForceBru