如何获得我的程序分配的内存大小?

时间:2012-09-21 13:09:44

标签: c++ c qt memory opencv

我用opencv用c编写我的项目。 我想要打印有关我的程序使用的已分配内存或内存的信息。 有没有一个函数,它给我有关内存的信息? 最后我使用Qt for Linux和Windows,

提前致谢。

3 个答案:

答案 0 :(得分:4)

您可以将包装器写入mallocfree,以跟踪您正在使用的内存量。

编辑:如果你还想拦截对malloc的调用和外部库中的free,你必须在共享库中定义它们并在libc之前加载它。如何执行此操作取决于您的操作系统。

答案 1 :(得分:4)

在Linux上,您可以查看your own process info pseudo-file

/proc/[pid]/statm
Provides information about memory usage, measured in pages. The columns are:
size       total program size
           (same as VmSize in /proc/[pid]/status)
resident   resident set size
           (same as VmRSS in /proc/[pid]/status)
share      shared pages (from shared mappings)
text       text (code)
lib        library (unused in Linux 2.6)
data       data + stack
dt         dirty pages (unused in Linux 2.6)

在Windows上,您可以查看自己的进程Process Object性能计数器:

  

Private Bytes显示此进程分配的当前字节数,无法与其他进程共享。

答案 2 :(得分:-1)

如果检查elf,dump或map文件,您还可以在构建期间对代码/数据段进行某种程度的内存分析。 堆栈使用的GCC命令行选项包括: -fstack-usage和-fcallgraph-info。