我需要爲每個迭代一次臨時數組分配空間。我嘗試使用realloc每次迭代來優化內存使用。像這樣:我可以使用std :: realloc來防止冗餘內存分配嗎?
int *a = (int*)std::alloc(2 * sizeof(int));
for(int i=0; i<N; ++i)
{
int m = calculate_enough_size();
a = (int*)std::realloc(m * sizeof(int));
// ...
}
std::free(a);
N
是一個很大的數字,例如1000000。有每個迭代的例子m
的值:8,2,6,10,4,8
我是否正確,當我在每次迭代realloc a
?它是否防止冗餘內存分配?
您是否需要在迭代中維護數組的內容? – 2014-09-12 11:20:26
您可以保存當前的迭代次數並且只在需要更多大小時纔可以重新分配 – user1781290 2014-09-12 11:21:26
在每次重新分配之後,沒有'a'填充'm'個新值 – user1312837 2014-09-12 11:22:43