首页 > 解决方案 > Valgrind 检测到内存泄漏,找不到它 C

问题描述

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

在此处输入图像描述

在此处输入图像描述

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

标签: cmemorymallocvalgrind

解决方案


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

这意味着当你这样做时

Dictionary* dictionary = initDictionary();

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

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

return dictionary;

initDictionary函数的最后。


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


推荐阅读