curl\_mime\_free(3) Library Functions Manual curl\_mime\_free(3)

# [NAME](#NAME)

curl\_mime\_free - free a previously built mime structure

# [SYNOPSIS](#SYNOPSIS)

```
#include <curl/curl.h>
void curl_mime_free(curl_mime *mime);
```

# [DESCRIPTION](#DESCRIPTION)

[*curl\_mime\_free(3)*](/man/os/curl/curl_mime_free.3) is used to clean up data previously built/appended with [*curl\_mime\_addpart(3)*](/man/os/curl/curl_mime_addpart.3) and other mime-handling functions. This must be called when the data has been used, which typically means after [*curl\_easy\_perform(3)*](/man/os/curl/curl_easy_perform.3) has been called.

The handle to free is the one you passed to the [*CURLOPT\_MIMEPOST(3)*](/man/os/curl/CURLOPT_MIMEPOST.3) option: attached sub part mime structures must not be explicitly freed as they are by the top structure freeing.

**mime** is the handle as returned from a previous call to [*curl\_mime\_init(3)*](/man/os/curl/curl_mime_init.3) and may be NULL.

Passing in a NULL pointer in *mime* makes this function return immediately with no action.

# [PROTOCOLS](#PROTOCOLS)

This functionality affects http, imap and smtp

# [EXAMPLE](#EXAMPLE)

```
int main(void)
{


  CURL *curl = curl_easy_init();


  if(curl) {


    /* Build the mime message. */


    curl_mime *mime = curl_mime_init(curl);


    /* send off the transfer */


    /* Free multipart message. */


    curl_mime_free(mime);


  }
}
```

# [AVAILABILITY](#AVAILABILITY)

Added in curl 7.56.0

# [RETURN VALUE](#RETURN_VALUE)

None

# [SEE ALSO](#SEE_ALSO)

[**curl\_free**(3)](/man/os/curl/curl_free.3), [**curl\_mime\_init**(3)](/man/os/curl/curl_mime_init.3)

2026-10-22 libcurl

---

Document: curl_mime_free(3) from curl 8.23.0-r2 (Chainguard OS)
Source: https://github.com/curl/curl.git
