From 447200a5e67c9dc738ed3bb5d224be243490c91c Mon Sep 17 00:00:00 2001 From: jf-home Date: Wed, 28 Aug 2024 00:23:18 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=95=B0=E6=8D=AE=E7=BB=93?= =?UTF-8?q?=E6=9E=84=E9=87=8A=E6=94=BE=E5=87=BD=E6=95=B0=E5=8F=82=E6=95=B0?= =?UTF-8?q?=EF=BC=8C=E4=BB=A5=E4=BF=9D=E8=AF=81=E7=BB=93=E6=9E=84=E4=BD=93?= =?UTF-8?q?=E6=8C=87=E9=92=88=E8=A2=AB=E9=87=8A=E6=94=BE=E5=90=8E=E8=83=BD?= =?UTF-8?q?=E6=81=A2=E5=A4=8D=E5=88=B0NULL?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- demo/demo.c | 4 ++-- demo/demo_heap.c | 4 ++-- demo/demo_queue.c | 2 +- demo/demo_tree.c | 6 +++--- include/deque.h | 2 +- include/heap.h | 2 +- include/list.h | 2 +- include/queue.h | 2 +- include/tree.h | 2 +- src/deque.c | 9 +++++---- src/heap.c | 9 +++++---- src/list.c | 9 +++++---- src/queue.c | 9 +++++---- src/tree.c | 16 ++++++++-------- 14 files changed, 41 insertions(+), 37 deletions(-) diff --git a/demo/demo.c b/demo/demo.c index cf1b127..d353d61 100644 --- a/demo/demo.c +++ b/demo/demo.c @@ -58,12 +58,12 @@ int main() printf("----- unicstl demo -----\n"); // while (1) { - // demo_list(); + demo_list(); // demo_stack(); // demo_deque(); // demo_queue(); // demo_tree(); - demo_heap(); + // demo_heap(); } printf("----- unicstl ok -----\n"); diff --git a/demo/demo_heap.c b/demo/demo_heap.c index 6cbd8c3..02cae81 100644 --- a/demo/demo_heap.c +++ b/demo/demo_heap.c @@ -78,7 +78,7 @@ void demo_heap_num(void) { printf("----- empty -----\n"); } - heap_free(heap); + heap_free(&heap); } static void demo_heap_struct(void) @@ -144,7 +144,7 @@ static void demo_heap_struct(void) { printf("----- empty -----\n"); } - heap_free(heap); + heap_free(&heap); } void demo_heap(void) diff --git a/demo/demo_queue.c b/demo/demo_queue.c index bc65a26..68c2bd6 100644 --- a/demo/demo_queue.c +++ b/demo/demo_queue.c @@ -292,7 +292,7 @@ static void demo_queue_struct(void) queue->print(queue); printf("\n"); - queue_free(queue); + queue_free(&queue); } diff --git a/demo/demo_tree.c b/demo/demo_tree.c index 9002cf2..7352716 100644 --- a/demo/demo_tree.c +++ b/demo/demo_tree.c @@ -141,7 +141,7 @@ void demo_avltree_num(void) printf("----- empty -----\n"); } - tree_free(tree); + tree_free(&tree); } static bool tree_rb_check_color(struct _tree *self, struct _tree_node* root, int black_num, int black_num_expected) @@ -326,7 +326,7 @@ void demo_rbtree_num(void) printf("----- empty -----\n"); } #endif - tree_free(tree); + tree_free(&tree); } /** @@ -458,7 +458,7 @@ void demo_rbtree_struct(void) printf("----- empty -----\n"); } #endif - tree_free(tree); + tree_free(&tree); } void demo_tree(void) diff --git a/include/deque.h b/include/deque.h index 29a23b6..1533d4e 100644 --- a/include/deque.h +++ b/include/deque.h @@ -69,6 +69,6 @@ typedef struct _deque* deque_t; bool deque_init(struct _deque* self, uint32_t obj_size); deque_t deque_new(void); -void deque_free(deque_t deque); +void deque_free(deque_t* deque); #endif diff --git a/include/heap.h b/include/heap.h index 4b616e1..1196106 100644 --- a/include/heap.h +++ b/include/heap.h @@ -59,6 +59,6 @@ typedef struct _heap* heap_t; bool heap_init2(struct _heap* self, uint32_t obj_size, uint32_t capacity); heap_t heap_new(void); -void heap_free(heap_t heap); +void heap_free(heap_t* heap); #endif // _HEAP_H_ diff --git a/include/list.h b/include/list.h index 26e4a54..db10f9f 100644 --- a/include/list.h +++ b/include/list.h @@ -62,6 +62,6 @@ typedef struct _list* list_t; bool list_init2(struct _list* self, uint32_t obj_size, uint32_t capacity); list_t list_new(void); -void list_free(list_t list); +void list_free(list_t* list); #endif // _LIST_H_ diff --git a/include/queue.h b/include/queue.h index 010e2b1..689c305 100644 --- a/include/queue.h +++ b/include/queue.h @@ -58,6 +58,6 @@ bool queue_init(struct _queue * queue, uint32_t obj_size); bool queue_init2(struct _queue * queue, uint32_t obj_size, uint32_t capacity); queue_t queue_new(void); -void queue_free(queue_t queue); +void queue_free(queue_t* queue); #endif // _QUEUE_H_ diff --git a/include/tree.h b/include/tree.h index 3a84075..92547a5 100644 --- a/include/tree.h +++ b/include/tree.h @@ -93,7 +93,7 @@ bool tree_avl_init(struct _tree *self, uint32_t obj_size); bool tree_rb_init(struct _tree *self, uint32_t obj_size); tree_t tree_new(void); -void tree_free(tree_t tree); +void tree_free(tree_t* tree); #endif // _TREE_H_ diff --git a/src/deque.c b/src/deque.c index a51bea9..c0c13a3 100644 --- a/src/deque.c +++ b/src/deque.c @@ -333,11 +333,12 @@ deque_t deque_new(void) return (struct _deque*)malloc(sizeof(struct _deque)); } -void deque_free(deque_t deque) +void deque_free(deque_t *deque) { - if(deque != NULL) + if(*deque != NULL) { - deque->destory(deque); - free(deque); + (*deque)->destory(*deque); + free(*deque); } + *deque = NULL; } diff --git a/src/heap.c b/src/heap.c index ec84537..8bf2f06 100644 --- a/src/heap.c +++ b/src/heap.c @@ -276,11 +276,12 @@ heap_t heap_new(void) return (struct _heap*)malloc(sizeof(struct _heap)); } -void heap_free(heap_t heap) +void heap_free(heap_t* heap) { - if(heap) + if(*heap != NULL) { - heap->destory(heap); - free(heap); + (*heap)->destory(*heap); + free(*heap); } + heap = NULL; } diff --git a/src/list.c b/src/list.c index 5daed1f..93ce908 100644 --- a/src/list.c +++ b/src/list.c @@ -220,11 +220,12 @@ list_t list_new(void) return (struct _list*)malloc(sizeof(struct _list)); } -void list_free(list_t list) +void list_free(list_t* list) { - if(list != NULL) + if(*list != NULL) { - list->destory(list); - free(list); + (*list)->destory(*list); + free(*list); } + list = NULL; } diff --git a/src/queue.c b/src/queue.c index 04709c3..b92c6a6 100644 --- a/src/queue.c +++ b/src/queue.c @@ -340,11 +340,12 @@ queue_t queue_new(void) return (struct _queue *)malloc(sizeof(struct _queue)); } -void queue_free(queue_t queue) +void queue_free(queue_t* queue) { - if(queue != NULL) + if(*queue != NULL) { - queue->destory(queue); - free(queue); + (*queue)->destory(*queue); + free(*queue); } + queue = NULL; } diff --git a/src/tree.c b/src/tree.c index c3234a7..bdc4296 100644 --- a/src/tree.c +++ b/src/tree.c @@ -177,7 +177,7 @@ int32_t tree_height(struct _tree* self, struct _tree_node* root) count_cur_level++; } } - queue_free(queue); + queue_free(&queue); return height; #endif } @@ -587,7 +587,7 @@ bool tree_clear(struct _tree* self) } tree_node_free(node); } - queue_free(queue); + queue_free(&queue); self->_root = NULL; self->_size = 0; return true; @@ -928,7 +928,7 @@ void tree_breadth(struct _tree* self, struct _tree_node* root) self->print_obj(node->obj); } } - queue_free(queue); + queue_free(&queue); } static struct _tree_node* tree_find_min(struct _tree* self, struct _tree_node* root) @@ -1532,12 +1532,12 @@ tree_t tree_new(void) return (struct _tree*)malloc(sizeof(struct _tree)); } -void tree_free(tree_t tree) +void tree_free(tree_t* tree) { - if(tree != NULL) + if(*tree != NULL) { - tree->destory(tree); - free(tree); + (*tree)->destory(*tree); + free(*tree); } + tree = NULL; } - \ No newline at end of file