---
name: "ns_malloc"
section: "3"
platform: "linux"
package: "aolserver4"
version: "4.0.10-7"
release: "Debian 4.0 (Etch)"
platforms: ["linux"]
url: "https://new.carta.tech/Ns_Alloc"
---

# ns\_malloc(3)

Memory allocation functions

Part of [Ns\_Alloc(3)](/Ns_Alloc/3.md).

```

```

## NAME

ns\_calloc, ns\_free, ns\_malloc, ns\_realloc, Ns\_Calloc, Ns\_Free, Ns\_Malloc, Ns\_Realloc - Memory allocation functions

## SYNOPSIS

```
#include "ns.h"

void *
Ns_Calloc(size_t num, size_t esize)
ns_calloc(size_t num, size_t esize)

void
Ns_Free(void *ptr)
ns_free(void *ptr)

void *
Ns_Malloc(size_t size)
ns_malloc(size_t size)

void *
Ns_Realloc(void *ptr, size_t size)
ns_realloc(void *ptr, size_t size)
```

## DESCRIPTION

The AOLserver memory storage allocation code was moved into Tcl core beginning with Tcl 8.4.0. Starting with AOLserver 3.5, these memory allocation functions are wrappers that call Tcl\_Alloc and Tcl\_Free. Earlier versions of AOLserver used this fast memory storage allocator internally, or the platform's memory allocator depending on how you configured it.

The actual amount of memory allocated or freed will be different from the requested amount.  This is because the fast memory allocation code pools memory into chunks and manages that memory internally. In addition, the Tcl distribution may be compiled to allocate even more memory which is used internally for diagnostic reasons. Using ns\_free to free memory created by routines other than ns\_malloc, ns\_realloc and ns\_calloc will almost certainly result in segmentation faults or undefined behavior.

The lowercase and mixed-case versions are identical; the lowercase versions are preferred.

- **ns\_calloc**(*num, esize*)

  Allocates a block of memory that is *num* \* *esize* large, zeros it, and returns a pointer to the beginning of the memory block or NULL if the operation fails.

- **ns\_free**(*ptr*)

  ns\_free() frees the memory space pointed to by ptr. This pointer must have been created with a previous call to ns\_malloc(), ns\_calloc() or ns\_realloc().

  If ptr is NULL, no operation is performed. ns\_free() returns no value.

- **ns\_malloc**(*size*)

  ns\_malloc() allocates size bytes and returns a pointer to the allocated memory.  The memory is not cleared. The value returned is a pointer to the allocated memory or NULL if the request fails. The memory must be freed by ns\_free.

- **ns\_realloc**(*ptr, size*)

  **ns\_realloc** changes the size of the memory block pointed to by *ptr* to *size* bytes.  The contents will be unchanged to the minimum of the old and new sizes. Newly allocated memory will be uninitialized.  If *ptr* is NULL, the call is equivalent to **ns\_malloc**(*size*); if *size* is equal to zero, the call is equivalent to **ns\_free**(*ptr*).  Unless *ptr* is NULL, it must have been returned by an earlier call to **ns\_malloc**(), **ns\_calloc**() or **ns\_realloc**().

## SEE ALSO

nsd(1), [info(n)](/info/n.md), [Tcl\_Alloc(3)](/Tcl_Alloc/3.md), [Tcl\_Free(3)](/Tcl_Free/3.md)

## KEYWORDS
