C代码的内存要求

时间:2012-10-22 17:07:38

标签: c++ c

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

编辑:想知道我们可以给出时间./a.out的时间,这将为节目提供完美的时间。

8 个答案:

答案 0 :(得分:3)

您可以启动程序,同时在不同的终端窗口中输入

top

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

答案 1 :(得分:1)

要查找数组的内存要求,您可以使用 sizeof 函数找到整个数组的大小:

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

找到每个元素的记忆:

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

答案 2 :(得分:1)

如果您有代码并且已经汇编了代码,则可以使用valgrind 。此控制台工具将打印堆摘要,并且在内存发生故障及其在代码上的位置时,已分配的内存已丢失了多少。

答案 3 :(得分:0)

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

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

答案 4 :(得分:0)

使用ps命令,您可以获得进程分配的内存页数。它不是一个完美的指标;如果您想要更高的精度,请使用内存分析器,例如 gperftools

答案 5 :(得分:0)

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

答案 6 :(得分:0)

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

(通过C源代码的静态分析来限制内存消耗通常是难以处理的或不可能的)

答案 7 :(得分:-3)

堆栈上

1000 * 4 = 4000。