C代码的内存要求

Memory requirement of C code

本文关键字:内存 代码      更新时间:2023-10-16

是否有任何方法可以知道我的C代码的内存要求?例如,我制作了int arrey[1000]的C代码。那么,运行时会在RAM中消耗多少内存,我可以使用任何代码/工具知道它而不手动计算它?(System:Ubuntu)

编辑:就像知道我们可以给我们的时间./a.out的时间一样

您可以启动程序,同时,在其他终端窗口中,类型

top

这将为您提供有关系统上运行的内容的信息:CPU使用,内存,用户,时间...

要使用 sizeof 函数找到整个数组的大小:

cout << "bytes used: " << sizeof(arrey) << endl;

找到每个元素的模因:

cout << "byte per element: " << sizeof(int) << endl;

如果您有代码并且已将其订阅,则可以使用valgrind 。该控制台工具将打印一个堆摘要,并且随着内存失败的失败以及它们在代码上的位置丢失了多少个内存。

使用以下Linux命令获取有关系统内存使用的统计信息:

$ free
...
$ cat /proc/meminfo
...

使用 ps命令,您可以获取由过程分配的内存页面。这不是一个完美的索引;如果您想要更精确的话,请使用内存分析器,例如 gperftools

只需使用cout<<sizeof(arrey);

的尺寸

从您自己的应用程序内部,您可以(顺序)读取/proc/self/statm/proc/self/maps等。在Proc(5)MAN页面中阅读有关/proc文件系统的更多信息。

(通过对C源代码的静态分析来界定内存消耗,通常是棘手或不可能的)

1000 * 4 = 4000,在堆栈上。