-
카테고리
-
세부 분야
알고리즘 · 자료구조
-
해결 여부
미해결
3강 문자열에 등장하는 코드에 관한 질문입니다.
18.07.07 10:16 작성 조회수 176
1
```/ strdup이 비표준이라 같은 기능을 하는 코드를 main내에 직접 삽입하였습니다. /
include
include
int main() {
int i=0;char *words[100];
char buf[100];
while(i<4 && scanf("%s", buf)!=EOF) {
char * tmp=(char *)calloc(strlen(buf)+1, sizeof(char)); /* 1 */
if(tmp!=NULL) {
strcpy(tmp, buf);
words[i++]=tmp;
}
}
for(i=0 ; i<4 ; ++i) {
printf("%s\n", words[i]);
/* 2 */
return;
}```
저는 위 코드를 다음과 같이 이해했습니다. 즉,
<tmp 포인터는 블록안에서 선언되었기 때문에 while문을 빠져나오면 words[n]의 각 첫바이트의 메모리 주소를 저장한 tmp안의 주소값은 생성과 소멸을 반복하다 마지막에 자동 소멸되나, 각각의 words[n]에 담긴 문자열은 소멸되지 않는다.
또한, 원하는 결과를 다 얻고 나서 calloc에 의해 생성된 메모리를 만일 소거하고 싶다면,
위 '2' 자리에
for(i=0 ; i<4 ; ++i) {
free(words[i]);
를 삽입하면 된다.>
위와 같이 해석하는 것이 맞는지 확인해 주시면 고맙겠습니다.
덧붙임> 좋은 강의 올려 주셔서 고맙습니다. 남은 파트도 열심히 잘 들을께요^^
답변을 작성해보세요.
답변 0