我尝试了以下两种方法。当我在一个小程序中测试它时,两者似乎都有效。但是,有可能内存来自操作系统,默认情况下将归零。
Approach1:
int n_var = 1000;
double *vars = malloc(n_var*sizeof(*vars));
if(!vars) die("Memory error.");
memset(vars, 0, n_var*sizeof(*vars));
方法2:
int n_var = 1000;
double *vars = calloc(n_var, sizeof(*vars))
if(!vars) die("Memory error.");
有人可以确认以上是否正确吗?
答案 0 :(得分:4)
理论上,没有任何要求0.0的表示都清晰,因此你应该明确初始化。 实际上,最常见的双重格式具有此属性,并且两种方式都有效。
答案 1 :(得分:2)
不幸的是,对于float或double类型,所有字节零都不是零的表示。 唯一的方法是迭代元素,然后手动设置为零。