From 60af03e5cc8ee8c34dac25940e35485009830447 Mon Sep 17 00:00:00 2001 From: Warwick New Date: Mon, 16 Dec 2024 22:12:08 +0000 Subject: [PATCH] Added deinit command to free the memory --- src/dyn_arr.c | 6 ++++++ src/dyn_arr.h | 3 ++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/dyn_arr.c b/src/dyn_arr.c index 04197ab..53aa893 100644 --- a/src/dyn_arr.c +++ b/src/dyn_arr.c @@ -60,6 +60,12 @@ void dyn_arr_pop(void *array, size_t item_size) { header = realloc(dyna_get_header(array), new_size); } +void dyna_deinit(void *array) { + dyna_header *header = dyna_get_header(array); + header = NULL; + free(dyna_get_header(array)); +} + bool dyna_empty(void *array) { if (dyna_length(array) == 0) { return true; diff --git a/src/dyn_arr.h b/src/dyn_arr.h index b2d87a3..cebddef 100644 --- a/src/dyn_arr.h +++ b/src/dyn_arr.h @@ -13,7 +13,6 @@ * - clear aka erase * - insert * - (optional) insert range - * - pop * - (optional) swap * - (optional) resize * - Sanity checks @@ -41,6 +40,8 @@ void *dyna_ensure_capacity(void *array, size_t item_count, size_t item_size); #define dyna_pop(array) dyn_arr_pop(array, sizeof(typeof(*array))) void dyn_arr_pop(void *array, size_t item_size); +void dyna_deinit(void *array); + // Get meta data #define dyna_get_header(array) ((dyna_header *)(array)-1) #define dyna_length(array) (dyna_get_header(array)->length)