C:提前或按需分配内存?

sha*_*rre 4 c

我有一个简单(可行)的问题.在C中创建自己的动态数组实现时,最好是在数组接近其当前最大能力时向前分配内存(假设为10个元素),或者每次元素数更改时重新分配内存?

我的意思是:为了表现,优雅或任何想到的东西.

dmc*_*kee 5

通常的选择是将当前大小乘以大于1的固定数字(通常为1.5,因为2),这样可以分摊O(n)总分配和复制成本.

请注意,无法保证您可以增加阵列的大小,因此您可能必须将所有现有元素复制到新位置(realloc()为您自动执行此操作,但您仍需支付费用).