2012-08-13 2 views
2

처음으로 cURL을 사용하고 있습니다. 설명서가 다소 완성 된 것 같지만 curl_easy_setopt() 매개 변수의 필수 수명을 어디에서 찾을 수 있는지 알 수 없습니다.cURL 옵션 매개 변수의 수명은 무엇입니까?

char* str = strdup("my user agent"); 
curl_easy_setopt(curl_handle, CURLOPT_USERAGENT, str); 
free(str); 

free() 호출 후 유효 curl_handle가 : 여기

무슨 뜻인지의 예입니다?

str 콘텐츠가 복사되었거나 여전히 어딘가에 의해 여전히 직접 참조되어 있습니까?

답변

3

From the official docs:

문자열은 '문자 *'로 인수를 libcurl에 전달 라이브러리로 복사됩니다; 따라서 curl_easy_setopt()가 리턴 한 후에 포인터 인수와 연관된 문자열 저장 영역을 겹쳐 쓸 수 있습니다. 이 규칙에 대한 예외 사항은 아래의 옵션 세부 사항에 설명되어 있습니다.

버전 7.17.0 이전에는 문자열이 복사되지 않았습니다. 대신 사용자는 libcurl이 더 이상 필요하지 않을 때까지 사용 가능하게 유지해야했습니다.

최근 버전의 libcurl을 사용하는 경우 설정 한 후 즉시 문자열을 해제 할 수 있습니다.

+0

대단히 감사합니다. 완벽한 대답. – ereOn

+0

@ereOn 오신 것을 환영합니다. –

+0

@ereOn 또한 strdup이 필요하지 않습니다. –

관련 문제