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 %ld 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 */
51 /* Resize an allocated chunk of memory for a given pointer and new size. */
56 die( "could not re-allocate 0 bytes of memory." );
57 } else if ( ( pt_new = realloc( pt, size ) ) == NULL ) {
58 die( "could not re-allocate memory." );
65 void *mem_resize_zero( void *pt, size_t old_size, size_t new_size )
67 /* Martin A. Hansen, May 2008 */
69 /* Resize an allocated chunk of memory for a given pointer and zero any extra memory. */
73 pt_new = mem_resize( pt, new_size );
75 if ( new_size > old_size ) {
76 memset( ( ( void * ) pt_new ) + old_size, '\0', new_size - old_size );
83 void *mem_clone( void *old_pt, size_t size )
85 /* Martin A. Hansen, June 2008 */
87 /* Clone a structure in memory and return a pointer to the clone. */
91 new_pt = mem_get( size );
93 memcpy( new_pt, old_pt, size );
99 void mem_free( void *pt )
101 /* Martin A. Hansen, May 2008 */
103 /* Free memory from a given pointer. */
114 void mem_free_zero( void *pt )
116 /* Martin A. Hansen, July 2008 */
118 /* Zero and then free memory from a given pointer. */