C++ 内存占用分析

C++ 内存占用分析,c++,c,memory-management,valgrind,memory-footprint,C++,C,Memory Management,Valgrind,Memory Footprint,假设我有一个用C/C++编写的程序,我想知道有多少内存用于数据堆、堆栈,有多少内存用于代码库、可执行文件等 我曾经使用“valgrind”测量过动态内存空间,但我认为它没有一个特性来分析数据和代码的内存占用 平台:Mac可能是Linux您的开发环境应该有一些链接器选项。通常,在这种情况下,您可以指示它创建链接映射。您要查找的信息可能在链接图中,或者可以根据链接图中的信息进行计算。任何这样做都可能是特定于平台的,因此您可能需要告诉我们平台以获得正确答案。您是指使用物理内存吗?还是虚拟内存的使用?例

假设我有一个用C/C++编写的程序,我想知道有多少内存用于数据堆、堆栈,有多少内存用于代码库、可执行文件等

我曾经使用“valgrind”测量过动态内存空间,但我认为它没有一个特性来分析数据和代码的内存占用


平台:Mac可能是Linux

您的开发环境应该有一些链接器选项。通常,在这种情况下,您可以指示它创建链接映射。您要查找的信息可能在链接图中,或者可以根据链接图中的信息进行计算。

任何这样做都可能是特定于平台的,因此您可能需要告诉我们平台以获得正确答案。您是指使用物理内存吗?还是虚拟内存的使用?例如,如果您映射了一个1GB的文件,但没有触及映射,您是否只使用了1GB的内存?@Carsten,您知道“valgrind”是否可以分析代码的内存占用?不适用于数据的内存占用。。我不是问我是否可以做一些内存泄漏检查…@Carsten OP是问我如何使用Valgrind或其他工具来分析堆消耗了多少内存,而代码段消耗了多少内存?我有一个相当天真的想法。对程序的主例程进行一个小的修改。将变量声明为volatile int stopAndHold=1;然后在你的主要程序开始时有一个whilestopAndHold{}循环。启动程序,并使用process viewer查看程序正在消耗的内存量。这应该可以让您估计main在堆栈上分配的代码、静态数据和变量的大小。