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

# memalign(3)

memory aligned allocate

## NAME

memalign - memory aligned allocate

## LIBRARY

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

## SYNOPSIS

```
#include <malloc.h>
```

**\[\[deprecated\]\] void \*memalign(size\_t** *alignment***, size\_t** *size***);**

## DESCRIPTION

**memalign**() is equivalent to [**aligned\_alloc**(3)](/aligned_alloc/3.md), except for the CAVEATS documented below.

## ATTRIBUTES

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

| | | |
| --- | --- | --- |
| **Interface** | **Attribute** | **Value** |
| **memalign**() | Thread safety | MT-Safe |

## VERSIONS

On some systems **memalign**() is declared in *\<stdlib.h\>* instead of *\<malloc.h\>*.

## STANDARDS

None.

## HISTORY

glibc 2.0. SunOS 4.1.3.

## CAVEATS

**memalign**() may not check that the *alignment* argument is correct.

Some systems provide no way to reclaim memory allocated with **memalign**() (because one can pass to [**free**(3)](/free/3.md) only a pointer obtained from [**malloc**(3)](/malloc/3.md), while, for example, **memalign**() would call [**malloc**(3)](/malloc/3.md) and then align the obtained value). The glibc implementation allows memory obtained from **memalign**() to be reclaimed with [**free**(3)](/free/3.md).

## SEE ALSO

[**aligned\_alloc**(3)](/aligned_alloc/3.md)
