BLOG | DOCUMENTATION | TRAC

Home --> Documentations --> PJLIB Reference

Stack/Buffer Based Memory Pool Allocator

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()
{
test();
return 0;
}

Function Documentation

◆ pj_pool_create_on_buf()

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
nameOptional pool name.
bufBuffer to be used by the pool.
sizeThe size of the buffer.
Returns
The memory pool instance.
PJ_BEGIN_DECL pj_pool_t * pj_pool_create_on_buf(const char *name, void *buf, pj_size_t size)
Definition: pool.h:310
void * pj_pool_alloc(pj_pool_t *pool, pj_size_t size)
pj_status_t pj_init(void)

 


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