Group PJ_POOL_BUFFER

group PJ_POOL_BUFFER

Stack/buffer based pool.

This section describes an implementation of memory pool which uses memory allocated from the stack. Application creates this pool by specifying a buffer (which can be allocated from static memory or stack variable), and then use normal pool API to access/use the pool.

If the buffer specified during pool creation is a buffer located in the stack, the pool will be invalidated (or implicitly destroyed) when the execution leaves the enclosing block containing the buffer. Note that application must make sure that any objects allocated from this pool (such as mutexes) have been destroyed before the pool gets invalidated.

Sample usage:

#include <pjlib.h>

static void test()
{
  char buffer[500];
  pj_pool_t *pool;
  void *p;

  pool = pj_pool_create_on_buf("thepool", buffer, sizeof(buffer));

  // Use the pool as usual
  p = pj_pool_alloc(pool, ...);
  ...

  // No need to release the pool
}

int main()
{
  pj_init();
  test();
  return 0;
}

Functions

pj_pool_t *pj_pool_create_on_buf(const char *name, void *buf, pj_size_t size)

Create the pool using the specified buffer as the pool’s memory. Subsequent allocations made from the pool will use the memory from this buffer.

If the buffer specified in the parameter is a buffer located in the stack, the pool will be invalid (or implicitly destroyed) when the execution leaves the enclosing block containing the buffer. Note that application must make sure that any objects allocated from this pool (such as mutexes) have been destroyed before the pool gets invalidated.

Parameters:
  • name – Optional pool name.

  • buf – Buffer to be used by the pool.

  • size – The size of the buffer.

Returns:

The memory pool instance.