2

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

方法1:

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

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

4

2 回答 2

4

从理论上讲,没有什么要求 0.0 的表示完全清楚,因此您应该显式初始化。实际上,最常见的双重格式具有此属性,并且两种方式都可以。

于 2012-08-11T15:39:59.257 回答
2

不幸的是,所有字节零都不是浮点或双精度类型的零表示。做到这一点的唯一方法是对元素进行迭代,然后手动设置为零。

于 2012-08-11T15:38:14.253 回答