동적할당이 된 문자열 sprintf로 복사후에
글쓴이: ljh30633 / 작성시간: 금, 2013/02/15 - 4:51오후
char *test(char *dirpath){
char *dir;
char *tmpdir;
asprintf(&dir, "%s", dirpath);
sprintf(tmpdir, "%s", dir);
free(dir);
return tmpdir;
}
예를 들어 다음과 같은 코드가 있다고 할때, asprintf함수는 내부적으로 동적 할당을 한다고 들었습니다. 그래서 사용후엔 free를 해주어야 하구요
동적할당했던 dir의 내용을 sprintf를 사용해 tmpdir 포인터 변수에 썼을 경우에
tmpdir 변수도 따로 free를 해주어야 하나요??
dir = tmpdir 이런식으로 되었을 경우에는 tmpdir을 받은 dir을 해제해주어야 하는 걸로 알고 있는데
sprintf를 사용하여 쓰기를 하였을 경우에는 어떻게 해야 하는지 했갈리네요 ㅠ
Forums:
아니요
아니요
tmpdir이 가리키는 가비지주소에 문자열을 쓰게
tmpdir이 가리키는 가비지주소에 문자열을 쓰게 됩니다. 동적할당을 하든 배열을 사용하든 하세요.
tmpdir이 가리키는 가비지주소에 문자열을 쓰게
tmpdir이 가리키는 가비지주소에 문자열을 쓰게 됩니다. 동적할당을 하든 배열을 사용하든 하세요.
tmpdir에 동적할당을 하시던가, 아니면
tmpdir에 동적할당을 하시던가, 아니면 tmpdir을 char* 가 아닌 배열 타입으로 선언하시는게 좋을 것 같습니다.
저대로라면 실행 시 문제가 발생할 수 있습니다.
대왕날치
댓글 달기