微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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()之后不需要实际初始化数组.

原文地址:https://www.jb51.cc/c/114981.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐