External Interfaces/API Reference    
mxMalloc

Allocate dynamic memory using the MATLAB memory manager

C Syntax

Arguments

n
   Number of bytes to allocate.

Returns

A pointer to the start of the allocated dynamic memory, if successful. If unsuccessful in a stand-alone (nonMEX-file) application, mxMalloc returns NULL. If unsuccessful in a MEX-file, the MEX-file terminates and control returns to the MATLAB prompt.

mxMalloc is unsuccessful when there is insufficient free heap space.

Description

MATLAB applications should always call mxMalloc rather than malloc to allocate memory. Note that mxMalloc works differently in MEX-files than in stand-alone MATLAB applications.

In MEX-files, mxMalloc automatically

The MATLAB memory management facility maintains a list of all memory allocated by mxMalloc. The MATLAB memory management facility automatically frees (deallocates) all of a MEX-file's parcels when control returns to the MATLAB prompt.

In stand-alone MATLAB applications, mxMalloc defaults to calling the ANSI C malloc function. If this default behavior is unacceptable, you can write your own memory allocation routine, and then register this routine with mxSetAllocFcns. Then, whenever mxMalloc is called, mxMalloc calls your memory allocation routine instead of malloc.

By default, in a MEX-file, mxMalloc generates nonpersistent mxMalloc data. In other words, the memory management facility automatically deallocates the memory as soon as the MEX-file ends. If you want the memory to persist after the MEX-file completes, call mexMakeMemoryPersistent after calling mxMalloc. If you write a MEX-file with persistent memory, be sure to register a mexAtExit function to free allocated memory in the event your MEX-file is cleared.

When you finish using the memory allocated by mxMalloc, call mxFree. mxFree deallocates the memory.

Examples

See mxmalloc.c in the mx subdirectory of the examples directory. For an additional example, see mxsetdimensions.c in the mx subdirectory of the examples directory.

See Also

mxCalloc, mxFree, mxDestroyArray, mexMakeArrayPersistent,
mexMakeMemoryPersistent, mxSetAllocFcns


  mxIsUint32 mxRealloc