我想調用一個函數,它使用我的二維動態數組創建另一個二維動態數組,然後重寫我的第一個數組的值。因此,代碼是這樣的:重寫二維數組時內存泄露
#include <stdio.h>
#include <stdlib.h>
int **bigger(int **A)
{
int i;
int **A2 = (int **)malloc(10 * sizeof(int *));
for(i = 0; i < 10; i++)
A2[i] = (int *)malloc(10 * sizeof(int));
return A2;
}
int main(void)
{
int i;
int **A = (int **)malloc(5 * sizeof(int *));
for(i = 0; i < 5; i++)
A[i] = (int *)malloc(5 * sizeof(int));
A = bigger(A);
for(i = 0; i < 10; i++)
free(A[i]);
free(A);
return 0;
}
如果我valgrind --leak-check=yes
檢查我得到總堆的使用情況:6個allocs,3周的FreeS,分配240個字節。我怎樣才能解決這個內存泄漏?
歡迎來到Stack Overflow! [請參閱此討論,爲什麼不在'C'中投射'malloc()'和family的返回值。](http://stackoverflow.com/q/605845/2173917)。 –