From d960c99a1f6fd19ae8b4113ee5e7d3424fd5e0f7 Mon Sep 17 00:00:00 2001 From: gonglja <39959756+Gonglja@users.noreply.github.com> Date: Sun, 26 Nov 2023 22:56:30 +0800 Subject: [PATCH] fix: bug fixes for array_hash_map.c and counting_sort.c (#968) * fix(codes/cpp): Memory leak fix: the space was not freed when pop removed the element. * fix(codes/cpp): Fix access error when printArray(arr, 0) * Update PrintUtil.hpp * fix(codes/c): Fix some errors of cmake build * feat(codes/c): Add hashing_search.c * styles(codes/c): Modify function description * styles(codes/c): Modify binary_search.c code style * fix(codes/c): Fix the problem in binary_tree_bfs.c and the problem that the memory is not released. * feat: Add preorder_traversal_i_compact.c * feat(codes/c): Add head_sort.c * feat(codes/c): Add bucket_sort.c * feat(codes/c): Add binary_search_edge.c * fix(codes/c): Add programs that are not managed by cmake (c code) * feat(codes/c): Add selection_sort.c * style(codes/c): Change swap in selection_sort.c to `selectionSort` * styles(codes/c): Change style. * fix(codes/c): Fix some formatting errors and temporarily remove backtracking chapters * fix(codes/c): Fix space_complexity.c build error. * feat(codes/c): Add array_binary_tree.c * feat(code/c): Update push_back and pop_back in vector.h * styles(codes/c): Adjust format. * feat(codes/c): Add `interation.c ` `recursion.c` `simple_hash.c` `binary_search_edge.c` `binary_search_insertion.c` in C codes. * fix(mylist.c): Fix `insert` function in `mylist.c` https://github.com/krahets/hello-algo/discussions/32#discussioncomment-6974163 * feat(codes/c): Add binary_search_recur.c * fix(codes/c): Bug fixes in discussion https://github.com/krahets/hello-algo/discussions/78\#discussioncomment-7611511 https://github.com/krahets/hello-algo/discussions/428\#discussioncomment-7637613 --------- Co-authored-by: Yudong Jin --- codes/c/chapter_hashing/array_hash_map.c | 2 +- codes/c/chapter_sorting/counting_sort.c | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/codes/c/chapter_hashing/array_hash_map.c b/codes/c/chapter_hashing/array_hash_map.c index cb2d8a905..3853ef00b 100644 --- a/codes/c/chapter_hashing/array_hash_map.c +++ b/codes/c/chapter_hashing/array_hash_map.c @@ -92,7 +92,7 @@ void pairSet(ArrayHashMap *hmap, MapSet *set) { for (i = 0; i < HASHTABLE_CAPACITY; i++) { if (hmap->buckets[i] != NULL) { entries[index].key = hmap->buckets[i]->key; - entries[index].val = malloc(strlen(hmap->buckets[i]->val + 1)); + entries[index].val = malloc(strlen(hmap->buckets[i]->val) + 1); strcpy(entries[index].val, hmap->buckets[i]->val); index++; } diff --git a/codes/c/chapter_sorting/counting_sort.c b/codes/c/chapter_sorting/counting_sort.c index 73ba54f0a..54aed970a 100644 --- a/codes/c/chapter_sorting/counting_sort.c +++ b/codes/c/chapter_sorting/counting_sort.c @@ -18,7 +18,7 @@ void countingSortNaive(int nums[], int size) { } // 2. 统计各数字的出现次数 // counter[num] 代表 num 的出现次数 - int *counter = malloc(sizeof(int) * m); + int *counter = calloc(m, sizeof(int)); for (int i = 0; i < size; i++) { counter[nums[i]]++; } @@ -29,6 +29,9 @@ void countingSortNaive(int nums[], int size) { nums[i] = num; } } + + // 4. 释放内存 + free(counter); } /* 计数排序 */ @@ -43,7 +46,7 @@ void countingSort(int nums[], int size) { } // 2. 统计各数字的出现次数 // counter[num] 代表 num 的出现次数 - int *counter = malloc(sizeof(int) * m); + int *counter = calloc(m, sizeof(int)); for (int i = 0; i < size; i++) { counter[nums[i]]++; } @@ -62,6 +65,9 @@ void countingSort(int nums[], int size) { } // 使用结果数组 res 覆盖原数组 nums memcpy(nums, res, size * sizeof(int)); + + // 5. 释放内存 + free(counter); } /* Driver Code */