【问题标题】:How to report own memory usage C++如何报告自己的内存使用C++
【发布时间】:2015-07-09 19:06:56
【问题描述】:

我需要在 C++ (C++11) 中打印自己的应用程序内存使用情况以查找内存泄漏。 我只使用 shared_ptr 但我的程序占用 4GB,输入是 1GB 输出 ~0,1GB。

我有一件大事

for (const std::string & file_name : *files){
    try{some_instructions_with_shared_ptr_here}}

Oudsie 这个因为我只有很小的数据结构,里面只有 shared_ptr。 其他类或数据结构可能有问题,所以我想知道什么时候内存泄漏。

【问题讨论】:

  • 你可以使用 valgrind 吗?我认为clang也有一个工具。否则,您可能必须自己进行检测,AFAIK 没有“简单”的方法可以做到这一点。
  • 这实际上取决于操作系统,分别是sbrk() 之类的可用性。
  • 我可以,谢谢。让我们试试……

标签: c++ c++11 memory printing


【解决方案1】:

使用 shared_ptr 不是无泄漏机制。如果你的 shared_ptr 指针中有循环,那么堆将永远不会被释放。 valgrind 也不会检测到它。

也许使用 setrlimit 来限制您的应用程序资源,并使用 gdb 查看崩溃的位置会给您一些提示。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多