Stack/buffer based pool.
More...
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];
void *p;
...
}
int main()
{
test();
return 0;
}
pj_status_t pj_init(void)
pj_pool_t * pj_pool_create_on_buf(const char *name, void *buf, pj_size_t size)
void * pj_pool_alloc(pj_pool_t *pool, pj_size_t size)
◆ pj_pool_create_on_buf()
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.