我很感兴趣地阅读了这篇文章 C difference between malloc and calloc。 我在我的代码中使用malloc,并想知道如果使用calloc会有什么不同。
我现在使用malloc的(伪)代码:
场景1
int main()
{
allocate large arrays with malloc
INITIALIZE ALL ARRAY ELEMENTS TO ZERO
for loop //say 1000 times
do something and write results to arrays
end for loop
FREE ARRAYS with free command
} //end main
如果我使用calloc而不是malloc,那么我将会得到:
场景2
int main()
{
for loop //say 1000 times
ALLOCATION OF ARRAYS WITH CALLOC
do something and write results to arrays
FREE ARRAYS with free command
end for loop
} //end main
我有三个问题:
如果数组非常大,哪种情况更有效率?
如果数组非常大,哪种情况的时间效率更高?
在这两种情况下,我只是按顺序向数组写入内容,对于循环的任何给定迭代,我都是按顺序从第一个元素到最后一个元素逐个写入每个数组。重要的问题是:如果我像方案1中使用malloc,那么初始化元素为零是否必需?假设使用malloc后,我得到了数组z=[垃圾1,垃圾2,垃圾3]。在每次迭代中,我都是依次写入元素,即在第一次迭代中,我得到了z=[某些结果,垃圾2,垃圾3],在第二次迭代中,我得到了z=[某些结果,另一个结果,垃圾3],以此类推,那么我是否需要在malloc之后特别初始化我的数组?