2

次の2つのアプローチを試しました。小さなプログラムでテストすると、両方ともうまくいくようです。ただし、デフォルトでゼロになるOSからメモリが供給されている可能性があります。

アプローチ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 の表現が完全に明確であることを強制するものは何もないため、明示的に初期化する必要があります。実際には、最も一般的な double 形式にはこのプロパティがあり、どちらの方法でも機能します。

于 2012-08-11T15:39:59.257 に答える
2

残念ながら、すべてのバイト ゼロは、float 型または double 型のゼロの表現ではありません。これを行う唯一の方法は、要素を反復処理し、手動でゼロに設定することです。

于 2012-08-11T15:38:14.253 に答える