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

时间:2013-11-08 10:50:40

标签: c arrays memory architecture

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

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

这应该存储为静态大小数组还是足够大以便动态分配?我想我不清楚堆栈的大小以及arr [60][60]之类的声明是否将仅存储在DATA部分中。这取决于机器还是代码本身?由于堆栈内存通常对应于高级缓存,因此对于此问题的大小限制是什么,比如英特尔i5系列机器?

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

1 个答案:

答案 0 :(得分:1)

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