5

我用 c 用 opencv 编写我的项目。我想打印有关分配的内存或程序使用的内存的信息。是否有功能可以提供有关内存的信息?最后我使用 Qt for Linux and Windows ,

提前致谢。

4

3 回答 3

4

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

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

于 2012-09-21T13:21:29.643 回答
4

在 Linux 上,您可以查看自己的进程信息伪文件

/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显示此进程已分配但不能与其他进程共享的当前字节数。

于 2012-09-21T13:27:27.820 回答
-1

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

于 2012-09-21T18:10:13.737 回答