lsmmay322   3년 전

보통 free라는 건 malloc을 통해 동적할당을 한 상태에서 메모리 누수를 없애주기 위해 하는건데

만약 동적할당하지 않은 변수를 free하면 오류가 나긴 합니다만

왜 오류가 날까요?

free해줄 동적메모리가 없기 때문에 오류가 뜨는거겠죠?

아님 제가 코드를 짤못짠건가..?

bupjae   3년 전

malloc 또는 calloc 의 결과로 받은 포인터 이외의 값을 free 에 넘기거나, 또는 이미 free 한 포인터를 또 다시 free 하는 프로그램의 실행결과는 정의되지 않았습니다. (undefined behavior)

즉, 이 프로그램의 실행결과는 예측할 수 없습니다.

*높은 확률*로 런타임 에러가 발생하겠지만, 아무 반응도 없이 프로그램이 계속 실행할수도 있고,

그러다가 한참 뒤에서야 완전히 엉뚱한 결과가 나올 수도 있고, 정말 우연히 원하는 결과가 나올 수도 있습니다.. 

어떤 결과가 나오든 이상하지 않습니다.

lsmmay322   3년 전

으음 오류가 뜨는게 정상이겠군요. 감사합니다~~ㅎㅎ

댓글을 작성하려면 로그인해야 합니다.