c - C 中静态分配数组大小的限制

标签 c arrays memory architecture

这是一个 C 语言中与内存分配相关的问题。我有一个数字(假设是 5 个)二维 float 组。每个数组都是 60x60。

理论上,此信息代表静态数据,在最初计算后不会更改。

应该将其存储为静态大小的数组,还是足够大以进行动态分配?我想我不清楚堆栈的大小,以及诸如 arr [60][60] 之类的声明是否将专门存储在 DATA 部分中。这取决于机器还是代码本身?由于堆栈内存通常对应于高级缓存,因此在 Intel i5 系列机器上,其大小限制是多少?

我知道这是一个非常广泛的问题,所以我很乐意引用可靠的背景来源。

最佳答案

所以它是 5 乘以 60 乘以 60 乘以 4(float 的大小)?那只有 72000 字节。小到足以将其声明为“静态”编译时数组/矩阵,即使在相当小的嵌入式系统中也是如此。如果您使用的是普通 PC(Windows、Linux、OSX),则堆栈至少为 1 MB,甚至可能高达 8 MB,因此也没有问题。此外,在一台合理的现代计算机(即最近六七年左右生产的计算机)上,复制 72000 字节的速度仍然足够快,您不会注意到它。

关于c - C 中静态分配数组大小的限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19857215/

相关文章:

c# - 您如何获得计算机的 RAM 总量?

c - 我如何找到在 C 中应该是常量的变量?

c - 为什么 C 中运算符之间的关联性不同?

c - 使用外部控制格式字符串的漏洞

arrays - Excel VBA 类型不匹配将范围传递给数组时出错

javascript - 如何 AJAX POST 对象数组到 Node.js 服务器?

arrays - 查找负载超过 10% 网络的用户

c++ - 将文件读入内存的最快技术?

c - 为什么 Visual Studio 会忽略我项目中的 .h 文件?

c - 分配 "weak"内存页