我用opencv用c编写我的项目。 我想要打印有关我的程序使用的已分配内存或内存的信息。 有没有一个函数,它给我有关内存的信息? 最后我使用Qt for Linux和Windows,
提前致谢。
答案 0 :(得分:4)
您可以将包装器写入malloc
和free
,以跟踪您正在使用的内存量。
编辑:如果你还想拦截对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。