有没有办法知道我的C代码的内存要求?
例如,我制作了int arrey[1000]
的C代码。那么在运行时它会在RAM中消耗多少内存,我可以用任何代码/工具知道它而不用手动计算吗?(系统:Ubuntu)
编辑:想知道我们可以给出时间./a.out的时间,这将为节目提供完美的时间。
答案 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。