#include <stdio.h>
#include <stdlib.h>
typedef struct a {
int n;
char *p;
} a;
int main()
{
a A;
A.p = (char *)malloc(20 * sizeof(char));
A.n = 100;
A.p = "just testing";
printf("%d\n%s\n", A.n, A.p);
free(A.p);
return 0;
}
디버깅해보니까 free(A.p) 여기가 문제인거같은데...
뭘 바꿔줘야될지 모르겠어여
메모리 할당은 했는데 거기다가 케릭터 리터럴 대입해서 그거 해제하다가 뻑난듯 - return 0;
저거 하려면 그냥 대입이 아니라 strncpy 써야될꺼임 - return 0;
ㄷㄷㄷ바로 해결되긴했는데 저렇게 바로대입하는거랑 strcpy로하는거랑 무슨차이가 있길래 결과가 다른건지 아시는분?
모르면서 진도는 뺀 거냐?ㅋㅋ
ㄴ 이유아시면 알려줘요
"just testing" 이건 const char* 잖어 그거를 free하려니까 에러가 나는거지
문자열 / 문자열 라이브러리 다시 공부해라.
책이 안 좋은 건가?