struct matrix //createing a matrix structure
{
int **next;
};
typedef struct matrix matrix_m;
void initial(matrix_m *mat, int m, int n)
{
int i, j;
mat->next = malloc(m * sizeof(int*));
for (i = 0; i < m; i++)
{
mat->next[i] = malloc(n * sizeof(int)); //create a 2D matrix
}
for (i = 0; i < m; i++)
{
for (j = 0; j < n; j++)
{
mat->next[i][j] = 2; //initial the value of matrix
}
}
}
void free_board(matrix_m mat)
{
free(mat.next);
}
我free后,在main里printf("%d",board.next);
发现值并不是0啊,而是7123813
哪里有问题呢
C语言二维数组free的问题
答案:2 悬赏:40 手机版
解决时间 2021-04-04 08:58
- 提问者网友:像風在裏
- 2021-04-04 05:20
最佳答案
- 五星知识达人网友:罪歌
- 2021-04-04 06:52
谁说free过后就是0的,free只是释放了这个内存,表示别的函数,别的进程可以用这块内存了,
一般free过后,再赋值为NULL;
free (mat.next)
mat.next = NULL;
一般free过后,再赋值为NULL;
free (mat.next)
mat.next = NULL;
全部回答
- 1楼网友:大漠
- 2021-04-04 07:26
把i从0加到3,能进入for循环的是0--2,那么输出的就是x[0][2],x[1]1],x[2][0].
也就是x数组的第三个,第五个,第七个元素,也就是 3 5 7
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯