0

次のコードがあります。

CURL *curl;

void http_init()
{
    curl = curl_easy_init();
    if (!curl) return -1;
}

void http_send_message(char *msg_out, char **msg_in)
{
    CURLcode res;

    curl_easy_setopt(curl, CURLOPT_URL, "http://192.168.1.133:8080/tawtaw");
    curl_easy_setopt(curl, CURLOPT_USERNAME, "tawtaw");
    curl_easy_setopt(curl, CURLOPT_PASSWORD, "tawtaw");
    curl_easy_setopt(curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC|CURLAUTH_DIGEST);
        .
        .
        .
   curl_easy_reset(curl); 
}

void http_exit()
{
    curl_easy_cleanup(curl); 
}

int main()
{
   char *msgin=NULL;
   http_init();
   http_send_message("message number 1", &msg_in);
   free(msgin);msgin=NULL;
   http_send_message("message number 2", &msg_in);
   free(msgin);msgin=NULL;
   http_exit();
}

私が電話したら

curl_easy_setopt(curl, CURLOPT_URL, "http://192.168.1.133:8080/tawtaw");

その後

curl_easy_reset(curl)

その後

curl_easy_setopt(curl, CURLOPT_URL, "http://192.168.1.133:8080/tawtaw");

繰り返しますが、最初に割り当てられたメモリは、の2番目の呼び出しによってcurl_easy_setopt解放されますか?curl_easy_reset(curl)curl_easy_setopt

または、メモリが解放されず、メモリ リークが発生していますか?

4

1 に答える 1

2

最初に割り当てられたメモリは、または の 2 番目の呼び出しによってcurl_easy_setopt()解放されますか?curl_easy_reset(curl)curl_easy_setopt()

問題は次のとおりです。

  1. 実装の詳細です。

  2. 前述の事実から、それは重要ではありません/重要ではありません。いずれかが真であり、どちらの場合でも適切なメモリ管理が可能です。

于 2012-12-07T14:36:38.260 に答える