C中数组大小的最大值

Der*_*unk 0 c arrays

只是一个简单的问题:当你必须定义一些数组在C中可以采用的(任意)最大值时,人们的做法是什么.所以,有些人只选择一个数字,希望它足够大,其他人则选择更接近于圆数(!)等,其他一些更深奥的数字,如素数更接近......等等.

那么,我想知道决定这些价值观的最佳做法是什么?

谢谢.

Juh*_*man 5

没有一般规则.twos的功能适用于缓​​冲区,我经常使用1024用于C中的字符串缓冲区,但任何其他数字都可以工作.素数对于散列表非常有用,在散列表中,简单的模数散列与素数大小配合使用.当然,您将大小定义为符号常量,以便以后可以更改它.

  • 对缓冲区使用2的幂实际上不是一个好主意,因为系统可能会分配几个记录保持字节,并且由于页面大小几乎总是2的幂,它可能最终浪费你的分配页面. (3认同)

tor*_*rak 5

如果我无法确定合理的最大值,我倾向于使用mallocrealloc根据需要增长阵列.当您不能保证它足够大以达到预期目的时,使用固定大小的阵列是危险的.