aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorverdant <im@verdant.ee>2026-07-28 15:22:02 +0800
committerverdant <im@verdant.ee>2026-07-28 15:22:02 +0800
commit0ffd523ccb690301a1428286438b3bba86695977 (patch)
tree01d88f359137418610670ecdb342d5a11ead2317
parent02f82a3cd9b65c2ddbeaf66df54dcf9b13511640 (diff)
downloadsf-0ffd523ccb690301a1428286438b3bba86695977.tar.gz
sf-0ffd523ccb690301a1428286438b3bba86695977.zip
Add util function: free_pointer_array
This function iterates through each element of pointer array, frees its memory, and finally free the array itself.
-rw-r--r--mem.c17
-rw-r--r--mem.h1
2 files changed, 18 insertions, 0 deletions
diff --git a/mem.c b/mem.c
index baa7977..c3d5db3 100644
--- a/mem.c
+++ b/mem.c
@@ -5,6 +5,7 @@
#include <stdlib.h>
#include "err.h"
+#include "log.h"
void *xmalloc(size_t size)
{
@@ -24,3 +25,19 @@ void *xrealloc(void *p, size_t size)
return pmem;
}
+
+void free_pointer_array(void **array, size_t len)
+{
+ if (!array) {
+ log_write(LOG_WARN, "free_poiner_array: array is NULL");
+ return;
+ }
+
+ for (size_t i = 0; i < len; i++) {
+ if (array[i]) {
+ free(array[i]);
+ }
+ }
+
+ free(array);
+}
diff --git a/mem.h b/mem.h
index 4b9b095..bcc112f 100644
--- a/mem.h
+++ b/mem.h
@@ -5,5 +5,6 @@
void *xmalloc(size_t size);
void *xrealloc(void *p, size_t size);
+void free_pointer_array(void **array, size_t len);
#endif /* SS_MEM_H */