Я пытаюсь реализовать новый malloc, который хранит размер в начале области malloc, а затем возвращает указатель на увеличенное местоположение (что следует после сохраненного целого без знака).
void* malloc_new(unsigned size) {
void* result = malloc(size + sizeof(unsigned));
((unsigned*)result)[0] = size;
result += sizeof(unsigned);
return result;
}
У меня есть сомнения относительно правильности строки
result += sizeof(unsigned);
(делает то, что я хочу).Скажем, исходный адрес в куче для malloc - X, а размер без знака - 4, я хочу, чтобы указатель «result» указывал на X + 4, верно?Это означает, что область памяти в стеке, в которой хранится указатель «результата», должна содержать (исходное расположение кучи + 4).