Articles of garbage collection

Может ли объект кучи, чей первоначальный адрес не храниться, защищен от сбора мусора?

Предположим, что Я изменяю чужую C-программу; активен сборщик мусора; существует объект в куче, я не хочу, чтобы сборщик мусора пожнел; а также объект живет до тех пор, пока программа не выйдет, поэтому нет необходимости освобождать (). Должен ли я хранить начальный адрес объекта? Предположим, что меня не интересует первоначальный адрес. Предположим, вместо этого, что я […]

Lua: garbage collection + userdata

Предположим, что следующая ситуация: typedef struct rgb_t {float r,g,b} rbg_t; // a function for allocating the rgb struct rgb_t* rgb(r,g,b) { rgb_t* c = malloc(sizeof(rgb_t)); c->r=r; c->g=g; c->b=b; return c; } // expose rgb creation to lua int L_rgb (lua_State* L) { rgb_t** ud = (rgb_t **) lua_newuserdata(L, sizeof(rgb_t *)); *ud = rgb(lua_tonumber(L,1),lua_tonumber(L,2),lua_tonumber(L,3)); return 1; […]

Слабая таблица и GC-финализатор с использованием API-интерфейса C

Я пытаюсь создать GC-финализатор для значения функции, сохраняя его в слабой таблице с использованием C API. Я начал писать прототип в чистом Lua 5.2: local function myfinalizer() print ‘Called finalizer’ end function myfunc() print ‘Called myfunc’ end local sentinels = setmetatable({}, { __mode=’k’ }) sentinels[myfunc] = setmetatable({}, { __gc=myfinalizer }) myfunc() myfunc = nil collectgarbage […]

gdb: установить контрольную точку для обработчика SIGBUS

Я пытаюсь отлаживать простой сборщик мусора и копировать сборщик (написанный на C) с использованием GDB. GC работает, обрабатывая SIGBUS. Я установил точку останова в верхней части обработчика сигнала SIGBUS. Я сказал GDB передать SIGBUS в мою программу. Однако он не работает. Следующая программа (поясненная inline) показывает суть моей проблемы: #include #include #include #include #define HEAP_SIZE […]

Сбор программ по сбору мусора или без мусора

Поэтому, если я хорошо понимаю, assembly Garbage автоматически освобождает объекты, которые больше не используются программой. как сборщик мусора в java. Я слышу на таких языках, как C, которые не поддерживают garbage collection, программы могут иметь утечки памяти и впоследствии исчерпывать память. Итак, каковы ошибки, которые программист делает на таких языках, как C, которые не поддерживают […]

Была ли конкретная причина сбора мусора не для C?

Я слышал, что было субоптимально для C автоматически собирать мусор – есть ли в этом какая-то правда? Была ли конкретная причина сбора мусора для C?