# Synopsis

PDX_MSGT mda_ReallocArray(long option, void *ent, void *old_ptr, size_t size, void *ptr, int ndims, ...)

# Purpose

Dynamically reallocate a multi-dimensional array.

# Description

Reallocates an array of any number of dimensions to be of a new size. Any of the dimensions can be increased or decreased in size and this function will copy the existing data appropriately. The number of dimensions and size specified must be the same as the array was originally allocated with. The block must have been allocated with mda_MallocArray, mda_CallocArray, or mda_ReallocArray. Blocks allocated with mda_Malloc, mda_Calloc, mda_Realloc, or mda_Strdup must be reallocated using mda_Realloc.

If the memory has been associated with an entity (i.e. either the ent argument was not NULL when the memory was originally allocated or mda_AddMemory has been called), then the entity which owns the memory must be passed in ent. If the memory has not been associated, ent must be specified as NULL.

Note that the ptr argument is the address of the pointer to the allocated memory. If ent is not NULL, this must be a field within the entity pointed to by ent. The variable at the address ptr must be declared as a pointer indirected by the number of dimensions in the array.

# Input

## option

### MDA_NO_COPY

Don't copy the data from the existing memory to the realloc'ed memory. This option reduces the amount of overhead significantly. If not specified, the appropriate data from the original array will be copied into the new array

## ent

The entity which owns the allocated memory

## old_ptr

The existing pointer to be reallocated

## size

The number of bytes in each array element

## ptr

Address to store the allocated memory pointer at

## ndims

The number of dimensions in the array @a ... The dimensions listed from left most to right most specified as MDA_COUNT values

# Output

## ptr

The allocated memory

# Return

MDA error code