|
주소가 다르다는게 str2 를 말씀하시는건지요?
아래처럼 해봤을때 같은 주소가 나오는데요 어떤거 말씀하시는건지 모르겠어요.
void test(char* str){
int i=0;
int size=strlen(str)+1;
char *str2;
str2 = (char *)calloc(size, sizeof(char));
printf("%x\n", str2); <== 주소 : 1d1478 출력
while(*str2++ = *str++);
*str2 = '\0';
str2-=size;
str-=size;
printf("%s %s\n", str2, str);
printf("%x\n", str2); // <== 주소 : 1d1478 출력
free(str2);
}
Lyn 님이 쓰신 글 :
: 처음할당한 str2랑 해제시의 str랑 위치가 다르네요.
:
: 권혁준 님이 쓰신 글 :
: : void test(char* str){
: : int i=0;
: : int size=strlen(str)+1;
: : char *str2;
: :
: : str2 = (char *)calloc(size, sizeof(char));
: :
: : while(*str2++ = *str++);
: : *str2 = '\0';
: :
: : str2-=size;
: : str-=size;
: : printf("%s %s\n", str2, str);
: :
: : free(str2);
: : }
: :
: : 안녕하세요. 공부중에 도저히 몰라서 질문드립니다.
: : 위 함수를 실행시키면 제일 아래 free 에서 에러가 나는데 왜 그런지 알고싶습니다.
: : 문자열조작하는거 공부중인데 많이 어렵네요.
|