5 void *mem_get( size_t size )
7 /* Martin A. Hansen, May 2008 */
11 /* Allocate a given chunk of memory to a pointer that is returned. */
17 if ( ( pt = malloc( size ) ) == NULL )
19 fprintf( stderr, "ERROR: Could not allocate %zu byte(s): %s\n", size, strerror( errno ) );
27 void *mem_get_zero( size_t size )
29 /* Martin A. Hansen, May 2008 */
33 /* Allocate a given chunk of zero'ed memory to a pointer that is returned. */
41 memset( pt, '\0', size );
47 void *mem_resize( void *pt, size_t size )
49 /* Martin A. Hansen, May 2008 */
53 /* Resize an allocated chunk of memory for a given pointer and new size. */
59 if ( ( pt_new = realloc( pt, size ) ) == NULL )
61 fprintf( stderr, "ERROR: Could not re-allocate %zu byte(s)\n", size );
69 void *mem_resize_zero( void *pt, size_t old_size, size_t new_size )
71 /* Martin A. Hansen, May 2008 */
75 /* Resize an allocated chunk of memory for a given pointer and zero any extra memory. */
79 pt_new = mem_resize( pt, new_size );
81 if ( new_size > old_size ) {
82 memset( ( ( void * ) pt_new ) + old_size, '\0', new_size - old_size );
89 void *mem_clone( void *old_pt, size_t size )
91 /* Martin A. Hansen, June 2008 */
95 /* Clone a structure in memory and return a pointer to the clone. */
101 new_pt = mem_get( size );
103 memcpy( new_pt, old_pt, size );
109 void mem_free( void **ppt )
111 /* Martin A. Hansen, May 2008 */
115 /* Free memory from a given pointer. */