mirror of
https://github.com/fish-shell/fish-shell
synced 2024-12-27 05:13:10 +00:00
57d53c70e3
darcs-hash:20060206181101-ac50b-db0aac307a81e7f0677acd15a9f38ff8c7ff36d2.gz
35 lines
1.2 KiB
C
35 lines
1.2 KiB
C
/** \file halloc.h
|
|
|
|
A hierarchical memory allocation system. Works just like talloc
|
|
used in Samba, except that an arbitrary block allocated with
|
|
malloc() can be registered to be freed by halloc_free.
|
|
|
|
*/
|
|
|
|
/**
|
|
Allocate new memory using specified parent memory context. If \c
|
|
context is null, a new root context is created. Context _must_ be
|
|
either 0 or the result of a previous call to halloc.
|
|
|
|
If \c context is null, the resulting block must be freed with a
|
|
call to halloc_free().
|
|
|
|
If \c context is not null, the resulting memory block must never be
|
|
explicitly freed, it will be automatically freed whenever the
|
|
parent context is freed.
|
|
*/
|
|
void *halloc( void *context, size_t size );
|
|
|
|
/**
|
|
Free memory context and all children contexts. Only root contexts
|
|
may be freed explicitly.
|
|
*/
|
|
void halloc_free( void *context );
|
|
|
|
/**
|
|
Free the memory pointed to by \c data when the memory pointed to by
|
|
\c context is free:d. Note that this will _not_ turn the specified
|
|
memory area into a valid halloc context. Only memory areas created
|
|
using a call to halloc() can be used as a context.
|
|
*/
|
|
void *halloc_register( void *context, void *data );
|