C++ 如何获得程序分配的内存大小?
我用opencv用c写我的项目。 我想要打印有关分配内存或程序使用内存的信息。 有没有一个函数,可以给我关于内存的信息? 最后,我使用Qt for Linux和WindowsC++ 如何获得程序分配的内存大小?,c++,c,qt,memory,opencv,C++,C,Qt,Memory,Opencv,我用opencv用c写我的项目。 我想要打印有关分配内存或程序使用内存的信息。 有没有一个函数,可以给我关于内存的信息? 最后,我使用Qt for Linux和Windows 提前感谢。您可以为malloc和free编写包装,跟踪您使用的内存量 编辑:如果您还想在外部库中拦截对malloc和free的调用,那么必须在共享库中定义它们,并在libc之前加载它们。如何做到这一点取决于您的操作系统。在Linux上,您将研究: 在Windows上,您可以查看自己的进程性能计数器: Private Byt
提前感谢。您可以为
malloc
和free
编写包装,跟踪您使用的内存量
编辑:如果您还想在外部库中拦截对malloc和free的调用,那么必须在共享库中定义它们,并在libc之前加载它们。如何做到这一点取决于您的操作系统。在Linux上,您将研究:
在Windows上,您可以查看自己的进程性能计数器:
Private Bytes
显示此进程分配的当前无法与其他进程共享的字节数
如果选中elf、dump或map文件,还可以在构建期间对代码/数据段进行某种级别的内存分析。
堆栈使用的GCC命令行选项是:-fstack用法和-fcallgraph信息。如果加载库并使用未包装的
malloc
,则前面的线程有一些想法,你的程序是否使用了这些内存?你能给我一个关于malloc作为包装器和免费的例子吗?@RemusRusanu这是绝对可能的。可以直接调用OS内存保留函数。像sbrk
(尽管不推荐,因为它会干扰一些malloc实现)memmap
是现代mallocs使用的,它提供了独立的内存块<在Win32上的code>VirtualAlloc,相同的概念。或者也是NTHeap
之类的东西。-1我很确定OP要求在运行时分配内存。
/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)