1 #include "first.h" 2 3 #include "vector.h" 4 5 #include <stdlib.h> 6 #include <string.h> 7 8 void vector_free(void *data) { free(data); } 9 10 void *vector_malloc(size_t sz) { return malloc(sz); } 11 12 void *vector_realloc(void *data, size_t elem_size, size_t size, size_t used) { 13 const size_t total_size = elem_size * size; 14 const size_t used_size = elem_size * used; 15 force_assert(size <= SIZE_MAX / elem_size); 16 data = realloc(data, total_size); 17 force_assert(NULL != data); 18 19 /* clear new memory */ 20 memset(((char*)data) + used_size, 0, total_size - used_size); 21 22 return data; 23 } 24