如果我像这样在循环中分配内存
for(file = 0; file < nfile; file++){
...
...
...
for(yy = 0; yy < ngridy; yy++){
for(xx = 0; xx < ngridx; xx++) {
tmparr1[xx+(ngridx*yy)] = (double *)calloc(nptperf[file], sizeof(double));
tmparr2[xx+(ngridx*yy)] = (double *)calloc(nptperf[file], sizeof(double));
}
}
稍后在代码中的某个时候,我会像这样释放内存:
for(yy = 0; yy < ngridy; yy++){
for(xx = 0; xx < ngridx; xx++) {
free(tmparr1[xx+(ngridx*yy)]);
free(tmparr2[xx+(ngridx*yy)]);
}
}
是否有可能free()
不释放内存并因此导致分配更多内存?我在每个file
循环中分配和释放一次内存。此外,nptperf[file]
通常在 1-3 百万点左右,并且ngridx = ngridy = 100
.
该程序适用于ngridx = ngridy = 80
和更少,但在100
.