c - 在C中的结构上使用malloc后数组中的默认值是什么
问题描述
假设我有这个代码:
typedef char BLOCK[10];
typedef struct {
BLOCK block;
}Object;
我这样做:
Object* obj;
obj = malloc(sizeof(obj));
我的问题:
数组“块”的每个单元格中是否都有默认值?
解决方案
假设您的代码中的“错误”只是一个错字(它应该是obj = malloc(sizeof(*obj));
,否则您将分配足够的空间来保存指针),那么标准中没有任何内容可以指定分配的数据将初始化为什么。
如果您想要定义初始化行为,那么您可以使用calloc
:
obj = calloc(1, sizeof(*obj)); // Note: sizeof(obj) = pointer size but sizeof(*obj) is struct size
这会将所有分配的字节初始化为零。
推荐阅读
- javascript - 在 WordPress 中使用 Twig 实现 AJAX 帖子过滤器
- git - 如何接受 git push?git 适合在 github 上发送完整的项目吗?我应该使用其他方法,哪个?嘘?
- javascript - 如何使用 Puppeteer 选择 RSS Feed 项元素?
- python-3.x - 如何在 Python 3 中运行可执行文件,同时将两个输入传递给提示符并将输出重定向到文本文件
- c++ - 在联合本身初始化后如何初始化联合成员?
- c# - 将具有多个 id 数据值的 gridview 行数据传递到另一个 Web 表单页面
- python - 远程代码运行服务器似乎没有响应?
- javascript - 如何在没有静态主键的情况下迭代 json?
- java - Hadoop MapReduce MapContext.write() 线程安全吗?
- mysql - MySQL 从子查询中选择计算