首页 > 解决方案 > 在C中的结构上使用malloc后数组中的默认值是什么

问题描述

假设我有这个代码:

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

我这样做:

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

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

标签: cstructmalloctypedef

解决方案


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

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

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

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


推荐阅读