次の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.");
上記が正しいかどうか誰でも確認できますか?