# OS_InitAlloc

## C Specification

      #include <nitro/os.h>

      void* OS_InitAlloc( OSArenaId id, void* arenaStart, void* arenaEnd, int maxHeaps );

## Description

This function initializes the memory allocation system. This function must be called first before creating a heap that is specified by the arena ID `id`.

For more information about the arena ID value, see `OS_InitArena`.

An information region for heaps is reserved at the beginning of the arena. The address that is returned after `OS_InitAlloc` is the arena's lower boundary address (start address) after the region has been reserved. Therefore, set and correct using the `OS_Set*ArenaLo` function.

## Example

    void* nstart;

    // On the main memory, initialize all of the arena for the heap region
    // Declares that the maximum number of the heap is 3
    nstart = OS_InitAlloc( OS_ARENA_MAIN, OS_GetMainArenaLo, OS_GetMainArenaHi, 3 );

    // Lower boundary address of the arena
    OS_SetMainArenaLo( nstart );

To start over with the setting, it is necessary to clear the memory allocation system information from arena by using the OS_ClearAlloc function.

## Arguments

`id` | The arena ID of the arena for which you will initialize the memory allocation system.
`arenaStart` | The arena lower boundary address.
`arenaEnd` | The arena upper boundary address.
`maxHeap` | The maximum heap number that can be reserved in that arena.

## Return Values

After acquiring the region for heap information at the start of the arena, this function returns the arena's actual 32-byte aligned, lower boundary address.

## See Also

`OS_SetArenaLo`, `OS_CreateHeap`, `OS_ClearAlloc`

## Revision History

08/30/2004 Added description for `OS_ClearAlloc`
07/06/2004 Added an example
01/06/2004 Initial version