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));
}
我使用上面的方法生成2D数组。它工作正常,但valgrind告诉我有内存泄漏。在这里释放记忆的正确方法是什么?
答案 0 :(得分:1)
要释放内存,您必须与分配内存时所做的完全相反。
从循环中创建的动态元素开始:
for (int i = 0; i < n_samp; i++){
free( *(m+i) );
}
然后做其余的事情:
free( m );
free( sol );