这是一个 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/