【发布时间】:2015-05-11 01:43:52
【问题描述】:
我正在开发一个涉及生成随机图的邻接矩阵的 C 程序。这是源代码的sn-p:
#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() 函数)和释放内存(destroy_matrix())。我正在查看destroy_matrix(),并注意到当传入一个 4x4 矩阵时,变量大小评估为 2,而不是 4。谁能解释为什么会发生这种情况?
【问题讨论】: