#include "stdlib.h" #include "string.h" #define HEAP_SIZE 128 * 1024 int main( void ) { memory_manager_t memory_manager; char buf[HEAP_SIZE]; uint32_t heap_offset = (uint32_t)&buf; size_t heap_size = HEAP_SIZE; memory_manager_init( &memory_manager, heap_offset, heap_size ); __stdlib_set_memory_manager( &memory_manager ); char *s; char *s1 = "test_string"; s = (char *)malloc( strlen( s1 ) + 1 ); size_t n = strlcpy( s, s1, strlen( s1 ) + 1 ); if( n != 11 ) exit( 1 ); if( strcmp( s, s1 ) != 0 ) exit( 1 ); free( s ); if( memory_manager.size != heap_size - sizeof( memory_chunk_t ) ) exit( 1 ); if( memory_manager.offset != (uint32_t)&buf ) exit( 1 ); if( memory_manager_stats_used( &memory_manager ) != 0 ) exit( 1 ); if( memory_manager_stats_free( &memory_manager ) != heap_size - sizeof( memory_chunk_t ) ) exit( 1 ); char *v[120]; for( int i = 0; i < 120; i++ ) { v[i] = (char *)malloc( i ); if( v[i] == NULL ) exit( 1 ); } for( int i = 119; i >= 0; i-- ) { free( v[i] ); } if( memory_manager_stats_used( &memory_manager ) != 0 ) exit( 1 ); if( memory_manager_stats_free( &memory_manager ) != heap_size - sizeof( memory_chunk_t ) ) exit( 1 ); exit( 0 ); }