Re: 71.9 심사문제 관련 질문입니다.
, 도장_ 관리자님이 작성메모리 할당과 관련해서 가장 자주 범하는 오류는
확장자를 .cpp로 사용하는 것입니다.
확장자를 .c로 사용하세요.
확장자가 .cpp이면 C++ 문법으로 컴파일하기 때문에 C++ 문법 기준으로 메모리 할당 오류가 발생합니다.
getData 함수에서 메모리를 할당하고 할당한 메모리를 반환하는 것이 어렵다면 함수를 단순화해서 다음과 같이 간단한 코드를 작성해서 정상 동작하는 것을 확인하고 코드를 확장하는 것입니다.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *getData(int size)
{
char *buffer = malloc(size + 1);
memset(buffer, 0, size + 1);
return buffer;
}
int main()
{
char *data = NULL;
data = getData(20);
strcpy(data, "Hello World");
printf("%s\n", data);
free(data);
return 0;
}
심사문제에서 getData에서 fp 파일 포인터를 받은 것은 파일의 내용을 읽기 위한 것이었으니까 파일 포인터 인자를 추가하고, 파일 포인터를 전달하고, 파일 내용을 읽어서 getData 안에서 출력해보는 것도 방법입니다.
하나씩 단계별로 동작을 확인하면서 해결해가세요.
처음부터 복잡한 코드를 처리할 수 있는 숙련도가 없을 때는 간단한 코드부터 복잡도를 하나씩 올려가는 게 좋습니다.