Valgrind 检测到内存泄漏,找不到 C

Nix*_*Nix -10 c memory malloc valgrind

Valgrind 正在发现内存泄漏,但我似乎无法确定它们,我希望这里有人可以帮助我:

在此处输入图片说明

在此处输入图片说明

主要电话是 Dictionary* dictionary = initDictionary();

Som*_*ude 5

initDictionary不会在dictionary任何地方返回指针。

这意味着当你做

Dictionary* dictionary = initDictionary();
Run Code Online (Sandbox Code Playgroud)

的值dictionary将是不确定的(看似随机或垃圾),并且取消引用此指针或将其传递给free将导致未定义的行为

你通过添加一个简单的来解决这个问题

return dictionary;
Run Code Online (Sandbox Code Playgroud)

initDictionary函数的最后。


如果您的编译器没有警告您不要从函数返回任何内容,您需要启用更详细的警告。在构建时使用gccclang我推荐的选项-Wall -Wextra -Wpedantic。对于 MSVC 使用/W4.