호출된 함수에서의 free(), malloc()에 의한 효과
글쓴이: indizarm / 작성시간: 화, 2003/10/07 - 2:02오후
char* str; int str_size; func(str, &str_size); ② ... func(char* str, int* str_size) { int str_size2; free(str); str = (char*)malloc(str_size2); ① *str_size = str_size2; }
이렇게 되어있을 경우에 func()호출이 효과를 보려면
func(char** str,...) 이렇게 해서 포인터의 주소값을
넘겨야 합니까? (이중 포인터가 별로 보기가 않좋아서...)
①의 위치와 ②의 위치에서 str의 값이 다르군요.
①에서는 원하는 값이 들어있는데 ②에서는 보이지 않는
군요. -_-;;
웃긴 상황이 똑같은 헤더로 다른 작업을 하면 함수를 고
치지 않고도 원하는 작업을 할 수 있다는 것이 헷갈리게
합니다.
Forums:
^^pointer 무지 헷갈리죠...위와 같이 하려면, f
^^
pointer 무지 헷갈리죠...
위와 같이 하려면, func 내의 새로이 할당된 str이 함수내에서만 유효합니다.
str pointer 자체도 pointer를 취해서 넘기시던가(보기싫은 이중포인터), 아니면 return 값으로 할당되는 pointer를 넘긴뒤 부른 쪽에서 str에 받아서 사용해야합니다.
보기는 싫어도 많은 라이브러리에서는 위와 같이 두 가지 방법이 골고루 나타납니다. 선호하는 것은 이중포인터를 배제하는 후자를 많이 사용하지요.
---
http://coolengineer.com
두 번씩이나 답변 감사합니다. ^_^함수의 return값으로는 다
두 번씩이나 답변 감사합니다. ^_^
함수의 return값으로는 다른 것을 필요로 하기 때문에
결국은 이중 포인터로 했습니다. 정말로 보기 않좋더군요.
char* str;
이렇게 하고
func(&str) 하려니까..... -_-;; 왠지 어색한...
남은 하루도 즐겁게 보내세요.
What a Cool Days!!!
댓글 달기