【发布时间】:2017-07-22 16:09:41
【问题描述】:
double* sol = (double*) calloc(n_samp, sizeof(double));
double** m = (double**) calloc(n_samp, sizeof(double*));
for (int i = 0; i < n_samp; i++){
*(m+i) = (double*) calloc((n_samp + 1), sizeof(double));
}
我正在使用上述方法生成一个二维数组。它工作正常,但 valgrind 告诉我存在内存泄漏。在这里释放记忆的正确方法是什么?
【问题讨论】:
-
你不应该在 C 中转换
calloc的返回值 -
只需执行分配内存的相反操作
-
@EdHeal 感谢您的评论。抱歉,我不确定您的确切意思。那么我应该只做 free(sol)、free(m) 和 for loop{free((m+i))} 吗?
-
运行循环释放内存,然后释放
m和sol -
二维数组在哪里?
标签: c memory memory-management memory-leaks