일반적으로 가비지 컬렉션이라 함은 메모리 상에서 더 이상 쓰지 않는 객체들을 가상 머신(혹은 컴파일러가)이 자동적으로 제거하는 작업을 말합니다.
그렇다면 가바지 컬렉션을 C언어로 코딩하여라..?
말에 어폐가 있습니다. 도움을 얻고 싶으시다면 앞뒤 정황을 "자세히" 써주시기 바랍니다. 이건 마치 [식당]에 가서 "조리용 식칼 만드려고 하는데 어떤 재료를 넣고 볶거나 삶아야 하죠?"라고 묻는 것과 같습니다.
(*) 추가 질문 내용에 대한 답변입니다.
교수님이 불가능한걸 시키실 리가 없지요. 거기다 질문자 분의 말씀대로라면, JAVA는 원래 가비지 컬렉터가 존재하므로 JAVA로 가비지 컬렉션이 되는 예는 보여줄 수 있겠으나 가비지 컬렉터를 흉내낸다는(교수님이 원하시는 것이 이것일듯) 것은 C나 JAVA나 마찬가지 입장입니다.
사실 추가 질문하신 내용도 명확하지가 않아 장담은 못하겠지만(수업 좀 자세히 듣지 그러셨어요.. ^^;), 아무래도 2가지 방법이란 것이 가비지 컬렉팅 과정에서 객체의 생명 주기를 판단하여 더 이상 사용되지 않는 객체를 판단하는 알고리즘을 이야기하는 것 같은데요. 혹은 윗 분 말씀대로 new나 malloc된 메모리를 별도의 메모리 공간에 저장해놓고, 프로그램이 종료할 때 자동으로 해제해주는.. 그런 기능요. 즉 new와 delete를 구현한다.. 가 되겠군요. 자료 타입은 달라도 void형 포인터와 템플릿을 이용하면 되니까(C가 아니라 C++이다아..) 해결은 가능합니다.
어쨌든, 이런 것들을 단순히 C로 구현하는 것이라면 별로 문제될 것이 없습니다... 만!! 거듭 드리는 말씀이지만 질문 내용만 가지고는 구체적으로 도와드리기 힘듭니다. 물론 질문자 분께서도 잘 모르시니까 답답한 심정에 여기다가 질문 올리셨다는건 충분히 이해가 됩니다만 이런 뜬 구름 잡는 질문에 답변자들도 제대로 된 답변하기 힘듭니다. 학교에 가셔서 잘하는 친구들에게 밥을 한 끼 사주더라도, "1. 어떤 강의 시간에 2. 어떤 내용을 설명하고(ex 가비지 컬렉팅 과정에서 객체의 생명 주기를 판단하는 알고리즘, 3. 어떤 부분을 C로 코딩해오라고 하였는지"를 명확하게 적어주시면, 제가 힘 닿는데 까지 도와드리겠습니다.
사실 가비지 컬렉션 그 자체를 C로 구현한다는건 자기가 언어를 스스로 창조하거나 가상 머신을 만들어야 한다는 이야기구요. 대학생들한테 시키기에는 무리가 있죠. 설마 이걸 시키진 않으셨을테고. 아. 하긴 우리 선배님들 후배님들은 나초스도 시키니까 하던데 [...]