Memory Pool Initialization

The following example demonstrates how to initialize and utilize a memory pool.

#include <stdio.h>
#include "ST_API.h"

/* 16 KB global memory buffer */
UINT8 BufferedMemory[16 * 1024];

/* 4 MB block located at address 0x10000 */
PVOID HiMemoryAddress = (PVOID) 0x00010000;
SIZE HiMemorySize = 4 * 1048576;

int main(void)
{
  ULONG TotalSize, FreeSize;

  /* Initialization */
  arInit();
  stInit();

  /* Initialize BufferedMemory */
  stMemoryInit(BufferedMemory, sizeof(BufferedMemory));

  /* Initialize HiMemory */
  stMemoryInit(HiMemoryAddress, HiMemorySize);

  /* Allocate 1 KB from BufferedMemory */
  stMemoryAlloc(BufferedMemory, 1024);

  /* Allocate 32 KB from HiMemory */
  stMemoryAlloc(HiMemoryAddress, 32 * 1024);

  /* Print memory capacity information for BufferedMemory */
  stMemoryGetInfo(BufferedMemory, &TotalSize, &FreeSize);
  printf("BufferedMemory: %i/%i\n", FreeSize, TotalSize);

  /* Print memory capacity information for HiMemory */
  stMemoryGetInfo(HiMemoryAddress, &TotalSize, &FreeSize);
  printf("HiMemory: %i/%i\n", FreeSize, TotalSize);

  /* Deinitialization */
  arDeinit();

  return 0;
}
SpaceShadow documentation