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

Valgrind detects memory leak, can't find it C

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

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

你的 initDictionary 没有 return 指针 dictionary 任何地方。

这意味着当你这样做时

Dictionary* dictionary = initDictionary();

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

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

return dictionary;

initDictionary 函数的末尾。


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