Код: Выделить всё
#include
#include
int main() {
int *ptr = malloc(sizeof(int));
if (ptr == NULL)
return 1;
// Free the allocated memory
free(ptr);
return 0;
}
Если мы используем GC Боема, рабочий процесс будет выглядеть следующим образом:< /p>
Код: Выделить всё
#include
#include
int main() {
int *ptr = GC_MALLOC(sizeof(int));
// No need to free memory explicitly, the GC will handle it
return 0;
}
Мой вопрос: что именно освобождает выделенную память?Я имею в виду, насколько я понимаю, GC_MALLOC выполняет цикл сборки мусора, если это необходимо, выделяет память, а затем возвращает (и это конец), и программа продолжает работу. Но последующих вызовов функций GC для освобождения памяти я не вижу. Означает ли это, что GC_MALLOC() создает отдельный поток для работы сборщика мусора, чтобы иметь возможность позже освободить память?
Другими словами, как сборщик мусора продолжать работать, если все его функции вернулись? Использует ли он atexit()?
Подробнее здесь: https://stackoverflow.com/questions/793 ... rate-threa