Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/158.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
轨道C和x2B+;内存使用和系统资源(无windows环境) 我在Linux中使用C++程序。现在我想检查我的程序中内存是如何分配的。由于我使用的库很复杂,我无法手动估计_C++_Memory - Fatal编程技术网

轨道C和x2B+;内存使用和系统资源(无windows环境) 我在Linux中使用C++程序。现在我想检查我的程序中内存是如何分配的。由于我使用的库很复杂,我无法手动估计

轨道C和x2B+;内存使用和系统资源(无windows环境) 我在Linux中使用C++程序。现在我想检查我的程序中内存是如何分配的。由于我使用的库很复杂,我无法手动估计,c++,memory,C++,Memory,我在网上搜索。有人建议瓦尔格林。我用过它,但它使我的程序崩溃了。也有人使用getrusage(),但我发现了很多负面评论 有人对此有什么建议吗?已经 它似乎在运行时提供了大部分内存/cpu的总使用量,但可能很有用,因为它有许多语言的绑定,并且可以在许多平台上工作 至于更详细的每个进程信息,您可以获得常驻、共享、虚拟内存总数以及i/o和页面错误。如果您的内存是由malloc分配的,则可以从gdb(或您的代码)获得: (gdb)调用malloc_stats() 3.2.2.11使用malloc的内

我在网上搜索。有人建议瓦尔格林。我用过它,但它使我的程序崩溃了。也有人使用getrusage(),但我发现了很多负面评论

有人对此有什么建议吗?

已经

它似乎在运行时提供了大部分内存/cpu的总使用量,但可能很有用,因为它有许多语言的绑定,并且可以在许多平台上工作


至于更详细的每个进程信息,您可以获得常驻、共享、虚拟内存总数以及i/o和页面错误。

如果您的内存是由malloc分配的,则可以从gdb(或您的代码)获得:

(gdb)调用malloc_stats()

3.2.2.11使用malloc的内存分配统计

您可以通过调用mallinfo函数来获取有关动态内存分配的信息。此函数及其关联的数据类型在malloc.h中声明;它们是标准SVID/XPG版本的扩展

-数据类型:struct mallinfo
此结构类型用于返回有关动态内存分配器的信息。它包括以下成员:

国际竞技场
这是malloc使用sbrk分配的内存的总大小,以字节为单位。
int ordblks
这是未使用的块数。(内存分配器从操作系统内部获取内存块,然后分割它们以满足各个malloc请求;请参阅效率和malloc。)
int smblks
此字段未使用。
int hblks
这是使用mmap分配的区块总数。
int hblkhd
这是使用mmap分配的内存的总大小,以字节为单位。
int usmblks
此字段未使用。
int fsmblks
此字段未使用。
国际计量单位
这是由malloc发出的块所占用的内存的总大小。
int fordblks
这是空闲(未使用)块占用的内存总大小。
int keepcost
这是通常与堆末端(即虚拟地址空间数据段的高端)相邻的最高可释放块的大小。
-函数:结构mallinfo mallinfo(void)

此函数返回有关struct mallinfo类型结构中当前动态内存使用情况的信息。

如果您使用自定义分配器,则可以创建用于跟踪度量的分配器。另一个选项是使用
tcmalloc
,它具有广泛的报告功能。Valgrind会使您的程序崩溃吗?这是一个信号,它有问题!