---
name: "nng_alloc"
section: "3"
platform: "linux"
package: "libnng-dev"
version: "1.10.1-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/nng_alloc"
---

# nng\_alloc(3)

allocate memory

## NAME

nng\_alloc - allocate memory

## SYNOPSIS

```
#include <nng/nng.h>
void *nng_alloc(size_t size);
```

## DESCRIPTION

The `nng_alloc()` function allocates a contiguous memory region of at least *size* bytes. The memory will be 64-bit aligned.

The returned memory can be used to hold message buffers, in which case it can be directly passed to `nng_send()` using the flag `NNG_FLAG_ALLOC`.  Alternatively, it can be freed when no longer needed using `nng_free()`.

**Important**\

Do not use the system `free()` function to release this memory. On some platforms this may work, but it is not guaranteed and may lead to a crash or other undesirable and unpredictable behavior.

## RETURN VALUES

This function returns a pointer to the allocated memory on success, and `NULL` otherwise.

## ERRORS

No errors are returned, but a `NULL` return value should be treated the same as `NNG_ENOMEM`.

## SEE ALSO

[nng\_free(3)](/nng_free/3.md), [nng\_send(3)](/nng_send/3.md), [nng\_strerror(3)](/nng_strerror/3.md), [nng(7)](/nng/7.md)
