gpt4 book ai didi

c - 在 C 中的结构上使用 malloc 后,数组中的默认值是多少

转载 作者:太空宇宙 更新时间:2023-11-04 02:20:51 25 4
gpt4 key购买 nike

假设我有这段代码:

typedef char BLOCK[10];
typedef struct {
BLOCK block;
}Object;

我这样做:

Object* obj;
obj = malloc(sizeof(obj));

我的问题:
数组“ block ”是否在其每个单元格中都有默认值?

最佳答案

假设您代码中的“错误”只是一个拼写错误(应该是 obj = malloc(sizeof(*obj)); 否则您将分配足够的空间来容纳一个指针),那么标准中就没有任何内容来指定分配的数据将被初始化为什么。

如果你想要定义初始化行为,那么你可以使用calloc:

obj = calloc(1, sizeof(*obj)); // Note: sizeof(obj) = pointer size but sizeof(*obj) is struct size

这会将所有分配的字节初始化为零。

关于c - 在 C 中的结构上使用 malloc 后,数组中的默认值是多少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58465210/

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