gpt4 book ai didi

近似空闲存储(堆)大小的 C++ 程序

转载 作者:太空狗 更新时间:2023-10-29 20:46:22 25 4
gpt4 key购买 nike

我应该编写一个不会崩溃并且可以估计空闲存储(堆内存)大小的程序。提示是

Hint: Use a loop to allocate, say, 1000000 bytes at a time andadd 1 to an unsigned long long counter; then when the allocation fails, printthe counter times 1000000.0.

这是我第一次接触编程和 C++,所以我完全不知所措。免费商店的大小不取决于计算机的内存吗?我怎么可能以字节为单位计算那个大内存的大小?

还有什么是unsigned long long?

最佳答案

通过连续分配 block 直到分配失败来测量 RAM 当然是一种方法,但这不是专业程序员解决问题的方法。这相当于通过读取整个文件并逐个计算字节来确定文件的大小(应该使用 stat()fstat()fseek()ftell() 代替。

更好的方法是询问操作系统有多少 RAM 可用。毕竟,它肯定知道这个问题的答案。

在 Linux 上,您将使用 sysinfo() API。阅读this举个例子。

在 Windows 上,您将使用 GetPhysicallyInstalledSystemMemory()。了解一下 here .

在 MacOS 上,您可以使用 sysctl() API,以及 CTL_HWHW_MEMSIZE 选择器。

This SO page具有针对三大平台的综合示例。

还有一件事:在具有虚拟内存的系统上,您尝试测量的空闲存储可能更接近于磁盘上系统交换文件的大小,而不是安装的物理 RAM 的数量,以及磁盘上其他进程的状态该系统还将影响连续分配所衡量的值(value)。

关于近似空闲存储(堆)大小的 C++ 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8359978/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com