- 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.