如何在C中将动态双数组元素初始化为0?

时间:2012-08-11 15:33:59

标签: c memory-management malloc

我尝试了以下两种方法。当我在一个小程序中测试它时,两者似乎都有效。但是,有可能内存来自操作系统,默认情况下将归零。

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."); 

有人可以确认以上是否正确吗?

2 个答案:

答案 0 :(得分:4)

理论上,没有任何要求0.0的表示都清晰,因此你应该明确初始化。 实际上,最常见的双重格式具有此属性,并且两种方式都有效。

答案 1 :(得分:2)

不幸的是,对于float或double类型,所有字节零都不是零的表示。 唯一的方法是迭代元素,然后手动设置为零。