首页 > 解决方案 > 为什么我的程序会自动释放东西?

问题描述

我正在尝试为大学任务做一个程序,我收到了 Valgrind 的这条消息:

==4244== HEAP SUMMARY:
==4244==     in use at exit: 300 bytes in 2 blocks
==4244==   total heap usage: 5 allocs, 3 frees, 2,428 bytes allocate

我不知道这3 个免费功能是从哪里来的,因为当我删除所有免费功能时,这 3 个免费功能仍然存在。我认为当一个函数返回而不释放东西时,这就是内存泄漏的情况。

我的问题是:为什么不是?函数返回时是否释放其中声明的所有内容?如果是这样,我怎么知道一个函数成功地释放了在那里声明的东西?

标签: cvalgrind

解决方案


东西在你的源代码之外的代码中得到 malloc()ed 和 free()ed,例如库函数。Valgrind 看到了这一切。


推荐阅读