0

这是 C 中与内存分配相关的问题。我有一个数字(比如说 5)二维浮点数组。每个阵列都是 60x60。

从理论上讲,此信息表示在初始计算后不会更改的静态数据。

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

我知道这是一个非常广泛的问题,所以我很乐意参考可靠的背景资料。

4

1 回答 1

1

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

于 2013-11-08T10:53:04.687 回答