[완료][C언어] fputs를 반복해서 이용하니 메모리에 문제가 생기네요.
글쓴이: kwanseob / 작성시간: 수, 2011/11/16 - 11:16오후
숫자를 하나씩 증가시켜서 파일에 기록하는 아주 간단한 코드입니다.
하지만 코드를 돌리니 메모리가 기하급수적으로 증가하는 문제가 발생하지만, 왜그런지를 모르겠습니다.
기록하는 파일의 크기가 너무 커져서 그러는 걸까요?
코드는 아래와 같습니다.
#include
#include
#include
#include
int main() {
FILE *file;
if( (file=fopen("filePointerResult", "w")) == 0) {
printf("ERROR: file openning!!\n");
exit(1);
}
mpz_t a;
mpz_init_set_str(a, "0", 10);
while(1) {
fputs(mpz_get_str(NULL, 10, a), file);
mpz_add_ui(a, a, 1);
}
return 0;
}
Forums:
당연히... 파일에 뭔가를 계속 기록한다고 프로그램의
당연히... 파일에 뭔가를 계속 기록한다고 프로그램의 메모리 사용량이 계속해서 늘어나지는 않습니다.
mpz_get_str() 함수가 동적으로 할당한 문자열을 반환하는데 그걸 해제해 주지 않고 있기 때문에 메모리 사용량이 계속 늘어나는 것입니다. 자세한 내용은 mpz_get_str() 매뉴얼을 봐주시면 되겠구요...
일반적으로, 문자열을 반환하는 함수를 쓸 때는 그 함수가 반환 문자열을 위한 메모리 공간을 어떻게 확보하는지 꼭꼭 확인해 주시면 좋습니다.
$PWD `date`
정확한 조언 감사합니다.
덕분에 문제를 해결할 수 있었습니다.
댓글 달기