typedef struct _sData
{
char *str1;
char *str2;
} DATA, *PDATA;
void main ( )
{
DATA data1={"abc","ABC"}, data2={"def","DEF"};
char temp[100];
printf("%s %s\n", data1.str1, data1.str2);
printf("%s %s\n", data2.str1, data2.str2);
memset(temp, 0 , sizeof(char)*100);
gets(temp);
data1.str1 = (char*)malloc(strlen(temp)+1);
strcpy(data1.str1, temp);
memset(temp, 0 , sizeof(char)*100);
gets(temp);
data1.str2 = (char*)malloc(strlen(temp)+1);
strcpy(data1.str2, temp);
printf("%s %s\n", data1.str1, data1.str2);
}
보면 malloc 두번하는데
free는 한번도 안하네
원래 malloc 한번 하면 free도 한번
두번하면 두번 해야 되는거 아님?
해야지 그런데 코드가 짧아서 생략했나보지
정상적인 운영체제라면 프로세스가 종료될 때 해당 프로그램이 할당했던 메모리는 다 자동으로 해제해 준다. 심지어 도스 마저도. 메모리 누수(memory leak) 문제는 그 프로세스가 돌고 있을 때 발생하지 빠르게 종료된다면 굳이 필요는 없음. 하지만 free()를 하라고 강조하는 이유는 좋은 습관을 들이라는 거임.