我在生成int矩陣時沒有產生內存泄漏問題。我希望能夠通過read_matrix()動態地將給定(全局)矩陣變成任意大小。但之後我希望能夠在以後釋放內存。所以在我的主要方法中,第二個printf應該會導致總線錯誤,因爲它不應該分配任何內存。我將如何去創造這個?int指針在C中的矩陣 - 內存分配混淆
int** first_matrix;
int** second_matrix;
int** result_matrix;
int** read_matrix(int size_x, int size_y)
{
int** matrix;
matrix = calloc(size_x, sizeof(int*));
for(int i = 0;i<size_x;i++) {
matrix[i] = calloc(size_y, sizeof(int));
}
for(int i = 0;i<size_x;i++) {
for(int j = 0;j<size_y;j++) {
matrix[i][j] = i*10+j;
}
}
return matrix;
}
int main(int stackc, char** stack)
{
first_matrix = read_matrix(10,10);
printf("9:3 %d - 4:6 %d \n", first_matrix[9][3], first_matrix[4][6]);
free(*first_matrix);
free(first_matrix);
printf("9:3 %d - 4:6 %d \n", first_matrix[9][3], first_matrix[4][6]);
}
您不能在C中的for循環中聲明變量。 – terminus 2008-09-19 21:26:56
您可以在C99中使用,但是您的代碼不能反向移植。 – 2008-09-19 21:59:20