gpt4 book ai didi

calloc -- 清零内存的用处

转载 作者:IT王子 更新时间:2023-10-28 23:33:02 33 4
gpt4 key购买 nike

清零内存有什么优势(即 calloc() 优于 malloc())?无论如何,您不会将值更改为其他值吗?

最佳答案

有两个阵营:一个说在声明变量时初始化变量有助于发现错误。这个阵营中的人确保他们声明的所有内容都已初始化。他们初始化指向 NULL 的指针,将 ints 初始化为 0,等等。想法是一切都是确定的,当他们看到 NULL 指针时在调试器中,他们立即知道它没有正确设置。它还可以帮助您的程序在测试期间由于 NULL 指针解引用而崩溃,而不是在生产运行中神秘地崩溃。

另一个阵营说,在声明时初始化变量会使事情更难调试,因为现在编译器无法警告您“未经设置就使用”的变量。

不告诉你我的个人喜好1:如果你属于第一阵营,你会想要calloc()而不是malloc()。如果您属于第二个阵营(显然 属于),那么您更喜欢 malloc() 而不是 calloc()

现在有两个异常(exception):

  • 如果你属于“初始化一切”阵营,你不是calloc()而是malloc(),因为你在初始化 float 或指针,而且您知道所有位为零并不一定意味着 0 对他们来说。或者,您不想要额外的开销。
  • 如果你属于“需要时设置”阵营,你可能希望在分配一些数据时calloc() 并希望它全为零。例如,如果您想通过 m 动态分配的 int 数据计算 n 的逐行总和。

1你可以在 SO 上看到我对许多问题的回答,看看我属于哪个阵营:-)。

关于calloc -- 清零内存的用处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2256220/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com