如何获取程序分配的内存大小

How can i get memory size allocated by my program?

本文关键字:分配 内存 程序 何获取 获取      更新时间:2023-10-16

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

提前谢谢。

在 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 上,您可以查看自己的进程进程对象性能计数器:

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

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

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

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