From ccf1950cf4490132540c7aaf6f2045979faee001 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20M=C3=A5rdbrink?= Date: Sat, 19 Apr 2025 15:00:59 +0200 Subject: [PATCH] Make dynamic array shrink on removal --- src/data_structure/dynamic_array.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/data_structure/dynamic_array.c b/src/data_structure/dynamic_array.c index 0511ba5..a4ec755 100644 --- a/src/data_structure/dynamic_array.c +++ b/src/data_structure/dynamic_array.c @@ -26,6 +26,11 @@ void dynarr_remove(DynamicArray* arr, usize idx) { void* data = dynarr_at(arr, idx); memmove(data, &((u8*)arr->data)[arr->data_size * (idx + 1)], (arr->len - idx - 1) * arr->data_size); arr->len--; + + if (arr->len < arr->capacity / GROWTH_FACTOR) { + arr->capacity /= GROWTH_FACTOR; + arr->data = (void*)realloc(arr->data, arr->capacity * arr->data_size); + } } void dynarr_push(DynamicArray* arr, void* data) {