Synopsis

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

Purpose

Dynamically allocate a multi-dimensional array.

Description

An array of any number of dimensions is allocated. If ent is not NULL, the memory is associated with the specified entity and will be swapped to and from memory when that entity is swapped. If ent is NULL the memory can later be added to an entity using mda_AddMemory.

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 referenced by ent. The variable at the address ptr must be declared as a pointer indirected by the number of dimensions in the array. The allocated array is stored contiguously in memory, just as it would if the dimensions were fixed. An example of allocating a variable array is shown below.

DDF entry for entity:

.nf count u; count v; float uv_paths[u][v];

The call to mda_MallocArray would be:

mda_MallocArray (MDA_NOOPT, &entity, sizeof(float), &entity.uv_paths, 2, entity.u, entity.v); .fi

Input

option

MDA_ZERO_DATA

This option is provided for backwards compatibility, mda_MallocArray will always initialize the allocated memory to 0.

ent

The entity which owns the allocated memory or NULL

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