Valgrind: Memory stillreachable with trivial program using
这个问题是关于 Valgrind 中关于仍可访问内存的警告。包含
问题:
一个包含
#include <iostream> int main() { return 0; }<p><strong>答案:</strong></p> <p>Valgrind 警告不是错误,而是一个错误特征。 C 标准库的许多实现都使用自己的内存池分配器。被破坏对象的内存不会立即释放并返回给操作系统,而是保留在池中以供以后重用。当程序退出时,内存池也没有被释放,导致 Valgrind 报告内存仍然可达。</p> <p><strong>解决方案:</strong></p> <p>有几种方法可以禁用池缓存并强制 STL 使用 malloc 并释放内存可能:</p> <ul><li><strong>使用 GCC 2.91 至 3.1:</strong></li></ul> <pre class="brush:php;toolbar:false">g++ -D__USE_MALLOC ...
export GLIBCPP_FORCE_NEW=1
export GLIBCXX_FORCE_NEW=1
其他注意:
以上是为什么 Valgrind 报告使用 `` 的简单程序仍可访问内存?的详细内容。更多信息请关注PHP中文网其他相关文章!