2015-07-10 1 views
0

Когда я выполнить curl_easy_perform я тогда сделать curl_easy_cleanup так:curl_easy_cleanup указатель оленья кожа ясно локон

CURL* pEasy = nullptr; 
pEasy = curl_easy_init(); 
if (pEasy != nullptr) 
{ 
    curl_easy_setopt(pEasy, CURLOPT_USERNAME, user.c_str()); 
    curl_easy_setopt(pEasy, CURLOPT_PASSWORD, pass.c_str()); 
    curl_easy_setopt(pEasy, CURLOPT_URL, urlToConnectTo.c_str()); 
    curl_easy_setopt(pEasy, CURLOPT_WRITEFUNCTION, OnReceiveHttpResponse); 

    curl_easy_perform(pEasy); 

    curl_easy_cleanup(pEasy); 
} 

Я заметил в моем отладчиком адрес указателя Peasy и его сказать 0x2af0ad18, но после того как я сделайте curl_easy_cleanup его еще 0x2af0ad18.

Должен ли я установить его на nullptr после? Я бы ожидал, что curl_easy_cleanup сбросит это для меня ???

+0

_ «Должен ли я установить его на nullptr после?» _ Возможно. То, что выделенная память была освобождена от адреса в 'pEasy', не устанавливает ее в' nullptr' автоматически. –

ответ

2

http://curl.haxx.se/libcurl/c/curl_easy_cleanup.html

Функция принимает указатель, как бы вы ожидаете, что изменить значение чего-то в вашей локальной области видимости?

При вызове free(x), он не устанавливает набор x к null он просто освобождает память, и это то же самое curl_easy_cleanup делает. Если вы хотите установить pEasy в nullptr или после этого, зависит от вас, возможно, хорошая практика, но ненужная в зависимости от компоновки вашего кода, и все равно pEasy собирается выйти из сферы действия.