【问题标题】:Why doesn't malloc initialize allocated memory to zero? [duplicate]为什么 malloc 不将分配的内存初始化为零? [复制]
【发布时间】:2021-10-16 08:14:03
【问题描述】:

来自Wikipedia

malloc() 不会初始化分配的内存,而 calloc() 保证分配的内存块的所有字节都已 初始化为 0。

我知道malloc 不会将内存初始化为任何东西,但我想知道,为什么会这样?这个设计决定背后有什么具体原因吗?以我的拙见,使用calloc(sizeof(T), 1) 似乎有点反模式,我想了解其意图。

【问题讨论】:

  • 如果应用知道它会立即用其他东西填充它,为什么要将它归零?那只是浪费循环。因此,可以选择做任何一个似乎都非常合理/明智。
  • malloc 被发明时,当时的 CPU 比我们今天习惯的要慢 1000 倍。效率在今天并不重要。每次将 malloc 的内存清零会花费大量时间,如果内存即将被其他内容填充,这些时间通常会被浪费。

标签: c memory-management malloc


【解决方案1】:

因为我们真的不想浪费所有的 CPU。太贵了。

确实如此。无论如何你都要覆盖它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-08
    • 1970-01-01
    • 2023-03-07
    • 2022-09-27
    • 1970-01-01
    • 2021-11-20
    • 2013-08-07
    • 2021-12-10
    相关资源
    最近更新 更多