예전 realloc은 문제가 있어서 지금?의 realloc은 내부적으로 free 하고 malloc하는 형태로 구성된다고 봤는데 어딘지는 모르겠네요.
전 그냥 free하고 다시 malloc하는게 가장 깔끔한 방법인거 같네요 ^^;
realloc 가 프리하고 다시 메모리 잡아주는형태입니다.
단순히 최근에 나온 유닉스 머신에서만 해당 프로그램을 구동한다면 아무런 문제가 없겠지요.
하지만 예전 머신의 realloc은 기존 할당받은 메모리에서 사이즈를 늘리거나 줄이는 방법으로 구현된경우가 있었기 때문에 여러 머신에서 구동할경우에는 문제가 발생할 수도 있음을 이야기 한것입니다.
실제로 그런경험을 했구여. ^^
man realloc
man realloc
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
답변에 감사 드립니당.
답변에 감사 드립니당.
내가 하고자 하는길....
걍 free하고 재할당 받는게...
예전 realloc은 문제가 있어서 지금?의 realloc은 내부적으로 free 하고 malloc하는 형태로 구성된다고 봤는데 어딘지는 모르겠네요.
전 그냥 free하고 다시 malloc하는게 가장 깔끔한 방법인거 같네요 ^^;
Re: 걍 free하고 재할당 받는게...
realloc 가 프리하고 다시 메모리 잡아주는형태입니다.
----------------------------------------------------------------------------
결함이 있다는 것은 조금 지나친 말이죠.
아마도 pointer 무효화로 인한 문제를 그렇게 말하는 것 같습니다.
동적할당된 장소를 가리키고 있는 pointer 가 두개 이상이라면 하나를 가지고 realloc 했을 경우
다른 pointer 들은 다시 설정해주기 전에는 사용할 수 없는 문제가 발생하죠.
물론 이것은 malloc 하고 원래장소에서 복사를 한 후 원래장소를 free 해도 마찬가지로 발생합니다.
Re: 걍 free하고 재할당 받는게...
단순히 최근에 나온 유닉스 머신에서만 해당 프로그램을 구동한다면 아무런 문제가 없겠지요.
하지만 예전 머신의 realloc은 기존 할당받은 메모리에서 사이즈를 늘리거나 줄이는 방법으로 구현된경우가 있었기 때문에 여러 머신에서 구동할경우에는 문제가 발생할 수도 있음을 이야기 한것입니다.
실제로 그런경험을 했구여. ^^
댓글 달기