如何在C语言中计算内存消耗

35 浏览
0 Comments

如何在C语言中计算内存消耗

这个问题已经有答案了:

如何在进程内部确定CPU和内存消耗

在C中有没有计算内存消耗的方法。我查看了Stackoverflow上的其他答案,但它们并不令人满意。

类似于Java中的方法:

// Get the Java runtime
Runtime runtime = Runtime.getRuntime();
// Run the garbage collector
runtime.gc();
// Calculate the used memory
long memory = runtime.totalMemory() - runtime.freeMemory();
System.out.println("Used memory is bytes: " + memory + "bytes");
System.out.println("Used memory is kilobytes: " + bytesTokilobytes(memory) +"kb");

admin 更改状态以发布 2023年5月20日
0
0 Comments

实际问题似乎是,你能否让C堆报告它当前持有的空间量。我不知道有一种可移植的方法来实现这一点。

或者您可以插入“调试堆”实现,该实现会跟踪此数字并提供API以检索它;调试堆作为二次来源库可用,您的编译器可能会附带其中之一。 (多年前,我将调试堆实现为一组宏,拦截堆调用并将它们重定向到包装器例程中执行多种分析;我没有维护使用计数器,但我可以这样做。)(注意:从调试堆分配的任何内容都必须返回到该堆中,而不是正常的堆,反之亦然,否则会很快出现非常丑陋的问题。)

或者您的编译器可能具有其他非标准的检索此信息的方法。请查阅其文档。

0
0 Comments

C语言本身并不提供任何手段。

虽然每个特定平台都提供了一些支持。

例如,在Windows上,您可以查看任务管理器,详情选项卡。右键单击列表视图列标题以添加/删除列。其中一些提供了进程消耗多少内存的见解。还有很多其他工具,包括商业工具(使用谷歌搜索),可以提供更详细的图像。

在Windows上,还有特殊的API允许编写自己的工具。一段时间以前我就写了一个。我不希望这个答案是广告。

0