From efc2fef19aff03fa5e5f0dec9ff0cc9533b4320f Mon Sep 17 00:00:00 2001 From: vil02 Date: Thu, 14 Sep 2023 19:59:04 +0200 Subject: [PATCH] fix: remove memory leak in `max_heap.c` --- data_structures/heap/max_heap.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/data_structures/heap/max_heap.c b/data_structures/heap/max_heap.c index 97ec2dec94..4d2e3954be 100644 --- a/data_structures/heap/max_heap.c +++ b/data_structures/heap/max_heap.c @@ -11,6 +11,13 @@ typedef struct max_heap Heap *create_heap(Heap *heap); /*Creates a max_heap structure and returns a pointer to the struct*/ +/** + * @brief Deallocates memory associated with a given heap. + * + * @param heap Pointer to the heap structure to be deallocated. + */ +void delete_heap(Heap *const heap); + void down_heapify(Heap *heap, int index); /*Pushes an element downwards in the heap to find its correct position*/ void up_heapify(Heap *heap, int index); /*Pushes an element upwards in the heap @@ -46,6 +53,7 @@ int main() printf("Popping an element.\n"); printf("Top element = %d \n", top(head)); printf("\n"); + delete_heap(head); return 0; } Heap *create_heap(Heap *heap) @@ -57,6 +65,16 @@ Heap *create_heap(Heap *heap) return heap; } +void delete_heap(Heap *const heap) +{ + if (heap == NULL) + { + return; + } + free(heap->p); + free(heap); +} + void down_heapify(Heap *heap, int index) { if (index >= heap->count)