我正在使用代码::块。
在 dealloc_mat 中进行 2-3 次迭代后释放矩阵时,代码会发送 seg 错误。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
int **_mat;
int _lines, _columns;
void alloc_mat();
void dealloc_mat();
int main(int argc, char *argv[])
{
_lines = 31, _columns = 22;
alloc_mat();
dealloc_mat();
return 0;
}
void alloc_mat()
{
int i, row, col;
_mat = malloc(sizeof(int *) * _lines);
for(i = 0 ; i < _lines ; i++)
{
int *tmpMatrix = malloc(sizeof(int) * _columns);
_mat[i] = &tmpMatrix[i];
}
for(row = 0 ; row < _lines ; row++)
{
for(col = 0 ; col < _columns ; col++)
{
_mat[row][col] = 0;
}
}
}
void dealloc_mat()
{
int row;
for(row = 0; row < _lines; row++)
{
free(_mat[row]);
}
free(_mat);
}