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 任何东西,您需要启用更详细的警告。使用 gcc
或 clang
我建议在构建时使用 -Wall -Wextra -Wpedantic
选项。对于 MSVC 使用 /W4
.
Valgrind 正在发现内存泄漏,但我似乎无法查明它们,我希望这里有人可以帮助我:
主要来电是Dictionary* dictionary = initDictionary();
你的 initDictionary
没有 return 指针 dictionary
任何地方。
这意味着当你这样做时
Dictionary* dictionary = initDictionary();
dictionary
的值将是 不确定的(看似随机或垃圾),取消引用此指针或将其传递给 free
将导致 undefined behavior.
你可以通过添加一个简单的方法来解决这个问题
return dictionary;
在 initDictionary
函数的末尾。
如果您的编译器没有警告您没有从函数中 returning 任何东西,您需要启用更详细的警告。使用 gcc
或 clang
我建议在构建时使用 -Wall -Wextra -Wpedantic
选项。对于 MSVC 使用 /W4
.