【问题标题】:how to find out the amount of memory used如何找出使用的内存量
【发布时间】:2012-07-02 04:15:21
【问题描述】:

我正在尝试一个 C/C++ 程序,我想知道由于堆和其他一些数据结构而使用了多少内存。那么如何才能知道我的各种数据结构使用的内存量呢?

我认为 malloc 运算符应该被覆盖,但我不确定。
我正在使用 Linux 和 Netbeans 7.1。

【问题讨论】:

  • 另见question
  • @hamed 谢谢..+1 给你的评论。另外,由于我正在研究netbeans ...无论如何netbeans可以帮助我...我在这方面完全是新手..这就是为什么要问..也感谢帮助。这个社区真的因为像你这样的人而摇滚。

标签: c++ c profiling heap-memory dynamic-allocation


【解决方案1】:

您可以按照类似问题中的建议使用用于 c++ 的内存分析器,例如 Valgrind。 见this

对于 netbeans IDE,请查看 this。

【讨论】:

  • 再次感谢您的帮助...如果您为 netbeans 6.9 提供了链接,但我正在使用 Netbeans 7.1...请您提供一些有关 netbeans 7.1 的好链接...谢谢再次
  • @RoseBEck:有人阻止你使用 shell?打开它并运行 valgrind,这是迄今为止最简单的方法
  • @akappa 实际上我正在运行一个包含多个文件和文件夹的巨大 C++ 项目..所以我有点担心 Valgrind 是否适用于我的大型项目...我知道它适用于单个文件..但它真的适用于大型项目吗...也感谢您的友善和回复
  • 7.1.2 的发行说明说:C/C++ 分析工具已从 IDE 的标准发行版中删除。 我认为您应该尝试@akappa 解决方案。
  • @RoseBEck:valgrind 运行可执行文件,因此它不关心您的项目由多少个文件和目录组成。
【解决方案2】:

如果你想使用手工制作的内存分析,那么你需要重载operator new 和/或malloc() 函数。虽然malloc() 很容易被重载,但是你需要使用宏技巧。

使用和重载operator new 的优势在于,它更容易、更优雅,并且您可以分别评估每种类型的struct/class。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-31
    • 1970-01-01
    • 1970-01-01
    • 2012-06-08
    • 1970-01-01
    • 2012-05-05
    相关资源
    最近更新 更多