我正在研究一個涉及生成隨機圖的鄰接矩陣的C程序。這裏是源代碼的一個片段:矩陣的大小沒有正確評估
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "test.h"
int main()
{
int **A = create_matrix(4, 3);
destory_matrix(A);
return 0;
}
int** create_matrix(int size, int seed)
{
// Allocate space for matrix
int **A = malloc(size * size * sizeof(int));
for (int r = 0; r < size; r++) {
A[r] = malloc(size * sizeof(int));
}
// Fill entries
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
A[i][j] = seed * (i + 1) * (j + 1);
}
}
return A;
}
void destory_matrix(int **A)
{
int size = sizeof(A[0])/sizeof(int);
for (int r = 0; r < size; r++) {
free(A[r])
}
free(A);
}
碼的這部分是負責創建矩陣(所述create_matrix()
功能)和free'ing存儲器(destroy_matrix()
)。我在看destroy_matrix()
,並注意到當傳入一個4x4矩陣時,變量大小評估爲2,而不是4.任何人都可以解釋爲什麼發生這種情況?