malloc 하고 free 한 공간에 대해서 좀 궁금한게 잇네요.

newlife958의 이미지

malloc 으로 공간을 할당 받고

그할당된 공간을 free 시킵니다.

그런데 이것이 무한히 반복된다면

힙이 다차게된다면 처음에 malloc 한공간을 free 시킨 메모리공간을 다시 할당하게되나요??

즉 free 한 메모리 주소를 malloc 하다보면 다시 재사용 하는지 궁금하네요

프로그래머가 그주소를 직접 대입이 아닌 자동할당할시에요.

어디선가 malloc 했다가 free한공간은 malloc 으로 다시 재사용 안한다는 말을 얼핏 들은거 같아서요.

molla의 이미지

당연히 free한 공간은 malloc 에서 다시 할당해 줍니다.

malloc 했다 free 한 공간을 재활용하지 않으면 엄청난 메모리낭비와 함께 금방 메모리 부족이 일어나게 될 것입니다. -ㅅ-
(electric fence 와 같은 일부 memory debugging tool 에서는 말씀하신 것처럼 malloc 한 영역을 재활용하지 않는 경우가 있습니다만. 아주 예외적인 경우입니다.)

malloc algorithm에 대해 더욱 자세한 것을 알고 싶으시면, doug lea 의 malloc 을 분석해 보세요. http://gee.cs.oswego.edu/pub/misc/malloc.c