---
name: "cfree"
section: "3"
platform: "linux"
package: "man-pages"
version: "6.19-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/cfree"
---

# cfree(3)

free allocated memory

## NAME

cfree - free allocated memory

## LIBRARY

Standard C library (*libc*, *-lc*)

## SYNOPSIS

```

```

**#include \<stdlib.h\>**

/\* In SunOS 4 \*/ **int cfree(void \****ptr***);**

/\* In glibc or FreeBSD libcompat \*/ **void cfree(void \****ptr***);**

/\* In SCO OpenServer \*/ **void cfree(**unsigned int n, unsigned int size;            **char** *ptr***\[***size* **\*** *n***\], unsigned int** *n***, unsigned int** *size***);**

/\* In Solaris watchmalloc.so.1 \*/ **void cfree(**size\_t n, size\_t size;            **void** *ptr***\[***size* **\*** *n***\], size\_t** *n***, size\_t** *size***);**

Feature Test Macro Requirements for glibc (see [**feature\_test\_macros**(7)](/feature_test_macros/7.md)):

**cfree**():

```
    Since glibc 2.19:
        _DEFAULT_SOURCE
    glibc 2.19 and earlier:
        _BSD_SOURCE || _SVID_SOURCE
```

## DESCRIPTION

This function should never be used. Use [**free**(3)](/free/3.md) instead. Starting with glibc 2.26, it has been removed from glibc.

### 1-arg cfree

In glibc, the function **cfree**() is a synonym for [**free**(3)](/free/3.md), "added for compatibility with SunOS".

Other systems have other functions with this name. The declaration is sometimes in *\<stdlib.h\>* and sometimes in *\<malloc.h\>*.

### 3-arg cfree

Some SCO and Solaris versions have malloc libraries with a 3-argument **cfree**(), apparently as an analog to [**calloc**(3)](/calloc/3.md).

If you need it while porting something, add

```
#define cfree(p, n, s) free((p))
```

to your file.

A frequently asked question is "Can I use [**free**(3)](/free/3.md) to free memory allocated with [**calloc**(3)](/calloc/3.md), or do I need **cfree**()?". Answer: use [**free**(3)](/free/3.md).

An SCO manual writes: "The cfree routine is provided for compliance to the iBCSe2 standard and simply calls free. The n and size arguments to cfree are not used."

## RETURN VALUE

The SunOS version of **cfree**() (which is a synonym for [**free**(3)](/free/3.md)) returns 1 on success and 0 on failure. In case of error, *errno* is set to **EINVAL**: the value of *ptr* was not a pointer to a block previously allocated by one of the routines in the [**malloc**(3)](/malloc/3.md) family.

## ATTRIBUTES

For an explanation of the terms used in this section, see [**attributes**(7)](/attributes/7.md).

| | | |
| --- | --- | --- |
| **Interface** | **Attribute** | **Value** |
| **cfree**() | Thread safety | MT-Safe /\* In glibc \*/ |

## VERSIONS

The 3-argument version of **cfree**() as used by SCO conforms to the iBCSe2 standard: Intel386 Binary Compatibility Specification, Edition 2.

## STANDARDS

None.

## HISTORY

Removed in glibc 2.26.

## SEE ALSO

[**malloc**(3)](/malloc/3.md)
