【发布时间】:2019-04-25 11:04:02
【问题描述】:
所以我阅读了calloc 的文档,它说它将初始化n 大小为size 的对象并将每个对象初始化为0。
所以在用 C 语言实现通用动态数组之前,我决定使用 int 类型来实现它,以使事情变得更简单。我曾经调用calloc,缓冲区中的每个整数都将被初始化为0,这意味着一个空白空间。但是当我将数据缓冲区从int *buffer 更改为void **buffer 时,我一直想知道这是否正确地初始化了每个指向NULL 的空指针。我已经看到 NULL 被转换为 0 如果你这样做 int a = NULL 但 void *p = 0 和 void *p = NULL 一样吗?这就是calloc 实际所做的吗?
【问题讨论】:
-
最后,一切都只是一个数字,并按原样存储。所以此时的内存将为 0。另一件事是它是如何评估的,在这种情况下,如果你访问这个指针,你将有一个 NULL 指针。还有different implementations of NULL
-
@Yastanub 另一件事是如何评估它,在这种情况下,如果您访问此指针,您将有一个 NULL 指针。 – 不,不能保证 @ 987654339@ 与全零相同。
-
@Swordfish 是的,重复,不知道为什么我在搜索一个小时后找不到那个问题。谢谢!
-
@LeoVen 那么你真的必须努力处理你的Google-fu
-
@Swordfish 考虑到标题很蹩脚并且与我实际寻找的内容无关,我的 google-fu 能力做得很好。我只是希望我的问题能填补像this one 这样的问题无法做到的另一个空白。
标签: c arrays buffer dynamic-memory-allocation calloc