---
name: "curl_mime_free"
section: "3"
platform: "linux"
package: "curl"
version: "8.23.0-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux", "macos"]
url: "https://new.carta.tech/curl_mime_free"
---

# curl\_mime\_free(3)

free a previously built mime structure

## NAME

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

## SYNOPSIS

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

## DESCRIPTION

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

The handle to free is the one you passed to the *[CURLOPT\_MIMEPOST(3)](/CURLOPT_MIMEPOST/3.md)* 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)](/curl_mime_init/3.md)* and may be NULL.

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

## PROTOCOLS

This functionality affects http, imap and smtp

## 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

Added in curl 7.56.0

## RETURN VALUE

None

## SEE ALSO

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