안드로이드 개발 질문/답변
(글 수 45,052)
char *nativeStr = (char *) malloc(len + 1);
으로 문자배열 할당해 놓고 쓴후에
free(nativeStr)
호출해서 해제해 주려고 하니까..
폰에서 동작할때 메모리 에러나면서 프로그램이 죽어버리네요..
free 주석치고 호출 안하면 잘 동작하구요...
이거 NDK 함수에서 메모리 해제 해주면 안되는건가요?
free 해줘야 할거 같은데.. 안되니까 난감하네요..
2011.05.30 14:50:02
free를 사용하시는게 맞습니다. 죽는 원인은 nativeStr 가 NULL로 초기화 되었거나, nativeStr 사이즈 보다 더 많은 내용을 사용하여 heap이 깨졌을 것으로 추정되니 찾아보세요... 우선 malloc시 크기를 늘려서 해보시길 추천합니다...




C 레벨에서 메모리 해제 한다고 죽지는 않습니다. 그리고 해제해서 사용해야 하고요~... 안그러면.. 메모리릭 발생되요..