- NAME
- SYNOPSIS
- FUNCTION DESCRIPTIONS
  - AcquireMemory
  - CloneMemory
  - LiberateMemory
  - ReacquireMemory

## NAME

memory - Memory allocation/deallocation functions

## SYNOPSIS

void * AcquireMemory( const size_t size );

void * CloneMemory( void *destination, const void *source, const size_t size );

void LiberateMemory( void ** memory );

void ReacquireMemory( void ** memory, const size_t size );

## FUNCTION DESCRIPTIONS

### AcquireMemory

> AcquireMemory() returns a pointer to a block of memory of at least size bytes suitably aligned for any use.

The format of the AcquireMemory method is:

> void *AcquireMemory ( const size_t size );

A description of each parameter follows:

  size:
    The size of the memory in bytes to allocate.

### CloneMemory

> CloneMemory() copies size bytes from memory area source to the destination. Copying between objects that overlap will take place correctly. It returns destination.

The format of the CloneMemory method is:

> void *CloneMemory ( void *destination, const void *source, const size_t size );

A description of each parameter follows:

  size:
    The size of the memory in bytes to allocate.

### LiberateMemory

> LiberateMemory() frees memory that has already been allocated, and NULLs the pointer to it.

The format of the LiberateMemory method is:

> void LiberateMemory ( void **memory );

A description of each parameter follows:

  memory:
    A pointer to a block of memory to free for reuse.

### ReacquireMemory

> ReacquireMemory() changes the size of the memory and returns a pointer to the ( possibly moved ) block. The contents will be unchanged up to the lesser of the new and old sizes.

The format of the ReacquireMemory method is:

> void ReacquireMemory ( void **memory, const size_t size );

A description of each parameter follows:

  memory:
    A pointer to a memory allocation. On return the pointer may change but the contents of the original allocation will not.

  size:
    The new size of the allocated memory.