debian man page for dynarr

Query: dynarr

OS: debian

Section: 3pub

Format: Original Unix Latex Style Formatted with HTML and a Horizontal Scroll Bar

DYNARR(3pub)						       C Programmer's Manual						      DYNARR(3pub)

NAME
dynarr, dynarr_init, dynarr_resize, dynarr_free - simple dynamic arrays
SYNOPSIS
#include <publib.h> void dynarr_init(struct dynarr *da, size_t elsize); int dynarr_resize(struct dynarr *da, size_t newsize); void dynarr_free(struct dynarr *da);
DESCRIPTION
These functions make it easier to use dynamic arrays, i.e., arrays that are allocated with malloc(3) and resized with realloc(3). Below is a typical code fragment for implementing a dynamic array that is resized as more input is read. char *p, *line; size_t alloc, len; len = 0; alloc = 1024; if ((line = malloc(alloc)) == NULL) abort(); while (fgets(line + len, alloc-len, stdin) != NULL) { len = strlen(line); alloc += 1024; if ((p = realloc(alloc)) == NULL) abort(); alloc = p; } (The error handling is intentionally simplified.) Below is the above fragment with the dynarr(3). struct dynarr da; dynarr_init(&da); while (fgets((char *)da.data + da.used, da.alloc-da.len, stdin) != NULL) { da.used = strlen(da.data); if (dynarr_resize(&da, da.alloc + 1024) == -1) abort(); } The code is a bit simpler, and all the memory allocation details and most of the error checking code is hidden away. The dynamic array is represented by a struct dynarr: struct dynarr { void *data; size_t alloc, used; }; The interface to the dynamic allocation has intentionally been made unopaque. dynarr_init initializes a struct dynarr to be an empty array, dynarr_resize sets its size to be newsize, and dynarr_free frees the array (it will become an empty array again).
RETURNS
dynarr_resize returns -1 if it failed, 0 if it succeeded. It does not change the array in any way if it failed.
SEE ALSO
publib(3), malloc(3), realloc(3), strdup(3)
AUTHOR
Lars Wirzenius (lars.wirzenius@helsinki.fi) Publib C Programmer's Manual DYNARR(3pub)
Related Man Pages
memdup(3pub) - debian
xmalloc(3pub) - debian
xrealloc(3pub) - debian
xfree(3pub) - sunos
xmalloc(3pub) - sunos
Similar Topics in the Unix Linux Community
Problems with Strlen
removing first bit from the word
How come '\0' doesnt show up in the debugger?
array dynamic allocation
Help with malloc()