可以分配多少数据,限制是如何确定的?我正在用 C 编写一个算法,它基本上重复使用存储在数组中的一些数据。我的想法是将其保存在动态分配的数组中,但我不确定是否可以分配这样的数量。
我使用 200 个大小为 2046 的数组,每个数组包含大小为 8 字节的复杂数据。我在整个过程中都使用这些,所以我不想一遍又一遍地计算它。
您对这种方法的可行性有何看法?
谢谢 和平号
最佳答案
malloc()
可以分配多少内存取决于:
- 你的程序可以直接寻址多少内存
- 有多少物理内存可用
- 有多少交换空间可用
在现代的平面内存模型 32 位系统上,您的程序可以寻址 4 GB,但部分地址空间(通常为 2 GB,有时为 1 GB)是为内核保留的。因此,根据经验,假设您有物理内存和交换空间来备份它,您应该能够一次分配近 2 GB 的内存。
在 64 位系统上,运行 64 位操作系统和 64 位程序,您的可寻址内存基本上是无限的。
200 个 2048 字节的数组每个只有 400k,这应该适合缓存(即使在智能手机上)。
关于c - 一次可以分配多少数据? Linux 等现代操作系统的限制是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3959874/