#include <xtend/mem.h>
-lxtend
void *xt_realloc(void *array, size_t nelem, size_t size)
array: Address of the previously allocated array
nelem: Number of objects to allocate
size: Size of a single object
xt_realloc() is a simple wrapper around realloc(3) that requires three arguments
representing the original array, the new number of objects to allocate and the
size of an element. This prevents the very common mistake with realloc(3) of
forgetting to multiply by the size of an element. Specifying the size using
sizeof(*variable) has the advantage of being type-independent. I.e. if you
change the type of the variable, this code need not be updated.
Address of the newly allocated array, or NULL if allocation failed
#define MAX_WIDGETS 1000
widget_t *widgets;
widgets = xt_malloc(MAX_WIDGETS, sizeof(*widgets));
widgets = xt_realloc(widgets, new_widget_count, sizeof(*widgets));