calloc v / s malloc和时间效率

我已经很感兴趣地阅读了这个帖子 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,那么我会有:

Scenario2

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

我有三个问题:

>如果阵列非常大,哪一种场景更有效?
>如果阵列非常大,那么哪些场景将更加节省时间?
>在这两种情况下,我只是在写数组的意义上说,对于for循环中的任何给定的迭代,我将从第一个元素顺序写入每个数组到最后一个元素.重要的问题:如果我在方案1中使用malloc,那么我有必要将元素初始化为零?用malloc说我有数组z = [garbage1,garbage2,garbage 3].对于每次迭代,我正在编写元素,即在第一次迭代中,我得到z = [some_result,garbage3],在第二次迭代中,我得到第一次迭代,another_result,garbage3]等on,那么我需要具体地在malloc之后初始化我的数组?

解决方法

假设您的两个示例中初始化的总内存量是相同的,使用calloc()分配内存可能比使用malloc()分配内存更快,然后在单独的步骤中将其清零,特别是在malloc( )通过在一个循环中迭代它们来单独排除元素. malloc()后跟一个memset()可能会和calloc()一样快.

如果在实际上将计算结果存储在其中之前,不关心数组元素是垃圾,那么在malloc()之后不需要实际初始化数组.

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...