BLOG | DOCUMENTATION | TRAC

Home --> Documentations --> PJLIB Reference

Stack/Buffer Based Memory Pool Allocator
[Fast Memory Pool]

Stack/buffer based pool. More...

Functions

PJ_BEGIN_DECL pj_pool_tpj_pool_create_on_buf (const char *name, void *buf, pj_size_t size)

Detailed Description

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;
  }

Function Documentation

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

 


PJLIB Open Source, high performance, small footprint, and very very portable framework
Copyright (C) 2006-2009 Teluu Inc.