我正在使用code :: blocks。釋放我的矩陣時出現分段錯誤
代碼在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);
}
其中是tmpMatrix的定義?此代碼不應編譯 – SheetJS
對不起,已編輯。複製錯誤的樣本。 –