Это школьное задание, и у меня большая его часть под контролем, но есть небольшая часть, которая создает утечку памяти, и у меня больше нет идей, как ее исправить.
Мы создали распределитель памяти, и проблема состоит в том, что эти две функции.
Этот первый нельзя изменить
void destroy (){
free():
tot_alloc = 0; }
Этот второй - тот, над которым я работаю
void free(){
munmap(pool, PAGE_SIZE);
Page* f = this;
f = f->prev;
if (f != NULL)
f->destroy();
}
Я написал все функции free (), и меня попросили в вызове вызвать destroy ().
Я понимаю, что эта функция не разрушает первое «это», потому что сразу же собирается f-> prev, но я понятия не имею, как заставить ее сначала уничтожить это и перейти к prev.
Надеюсь, это не слишком глупый вопрос.
Большое спасибо!
Nico