NodeC  0.1
Memory Allocation.

Routines for safe memory allocation based on using. More...

Macros

#define nodecx_malloc
 
#define nodecx_calloc
 
#define nodecx_realloc
 
#define nodecx_free
 
#define nodec_malloc
 
#define nodec_calloc
 
#define nodec_realloc
 
#define nodec_free
 
#define nodecx_alloc(tp)
 
#define nodecx_zero_alloc(tp)
 
#define nodec_alloc(tp)
 Allocate memory for a type. More...
 
#define nodec_alloc_n(n, tp)
 
#define nodec_zero_alloc_n(n, tp)
 
#define nodec_zero_alloc(tp)
 
#define nodec_realloc_n(p, n, tp)
 
#define using_free(name)
 Use a pointer in a scope and free afterwards. More...
 
#define using_alloc(tp, name)
 Allocate and use a pointer in a scope and free afterwards. More...
 
#define using_alloc_n(n, tp, name)
 
#define using_zero_alloc_n(n, tp, name)
 
#define using_zero_alloc(tp, name)
 
#define nodec_zero(tp, ptr)
 

Functions

void nodec_register_malloc (lh_mallocfun *_malloc, lh_callocfun *_calloc, lh_reallocfun *_realloc, lh_freefun *_free)
 
void nodec_check_memory ()
 
void * check_nonnull (void *p)
 
void * _nodecx_malloc (size_t size)
 
void * _nodecx_calloc (size_t count, size_t size)
 
void * _nodecx_realloc (void *p, size_t newsize)
 
void * _nodec_malloc (size_t size)
 
void * _nodec_calloc (size_t count, size_t size)
 
void * _nodec_realloc (void *p, size_t newsize)
 
void _nodec_free (const void *p)
 
void nodec_freev (lh_value p)
 
char * nodec_strdup (const char *s)
 
char * nodec_strndup (const char *s, size_t max)
 
const void * nodec_memmem (const void *src, size_t src_len, const void *pat, size_t pat_len)
 
int nodec_strnicmp (const char *s, const char *t, size_t n)
 
int nodec_stricmp (const char *s, const char *t)
 
uv_errno_t nodec_strncpy (char *dest, size_t destsz, const char *src, size_t count)
 

Detailed Description

Routines for safe memory allocation based on using.

These raise an exception on failure and always free even if exceptions are raised. The code :

{using_alloc(mystruct_t, name) {
...
}}

will safely allocate a mystruct_t* to name which can be used inside ... and will be deallocated safely if an exception is thrown or when exiting the block scope.

Macro Definition Documentation

◆ nodec_alloc

#define nodec_alloc (   tp)

Allocate memory for a type.

Parameters
tpThe type to allocate memory for. Example
my_struct_t* p = nodec_alloc(my_struct_t);
...
}}

◆ using_alloc

#define using_alloc (   tp,
  name 
)

Allocate and use a pointer in a scope and free afterwards.

Always frees the pointer, even if an exception is thrown.

Parameters
tpThe type of value to allocate.
nameThe name of the tp*. Equivalent to:
tp* name = nodec_alloc(tp);
{using_free(name){
...
}}

◆ using_free

#define using_free (   name)

Use a pointer in a scope and free afterwards.

Always frees the pointer, even if an exception is thrown.

Parameters
nameThe name of the void*.