1 /* Martin Asser Hansen (mail@maasha.dk) Copyright (C) 2008 - All right reserved */
7 void *mem_get( size_t size )
9 /* Martin A. Hansen, May 2008 */
13 /* Allocate a given chunk of memory to a pointer that is returned. */
19 if ( ( pt = malloc( size ) ) == NULL )
21 fprintf( stderr, "ERROR: Could not allocate %zu byte(s): %s\n", size, strerror( errno ) );
29 void *mem_get_zero( size_t size )
31 /* Martin A. Hansen, May 2008 */
35 /* Allocate a given chunk of zero'ed memory to a pointer that is returned. */
49 void *mem_resize( void *pt, size_t size )
51 /* Martin A. Hansen, May 2008 */
55 /* Resize an allocated chunk of memory for a given pointer and new size. */
61 if ( ( pt_new = realloc( pt, size ) ) == NULL )
63 fprintf( stderr, "ERROR: Could not re-allocate %zu byte(s)\n", size );
71 void *mem_resize_zero( void *pt, size_t old_size, size_t new_size )
73 /* Martin A. Hansen, May 2008 */
77 /* Resize an allocated chunk of memory for a given pointer and zero any extra memory. */
81 pt_new = mem_resize( pt, new_size );
83 if ( new_size > old_size ) {
84 bzero( ( ( void * ) pt_new ) + old_size, new_size - old_size );
91 void *mem_clone( void *old_pt, size_t size )
93 /* Martin A. Hansen, June 2008 */
97 /* Clone a structure in memory and return a pointer to the clone. */
103 new_pt = mem_get( size );
105 memcpy( new_pt, old_pt, size );
111 void mem_free( void *pt )
113 /* Martin A. Hansen, May 2008 */
115 /* Free memory from a given pointer. */
117 void **ppt = ( void ** ) pt;