【发布时间】:2013-12-06 21:55:32
【问题描述】:
我有一个使用双指针创建矩阵的结构:
typedef struct
{
int rows, cols;
int** element;
}Matrix;
我正在编写一个函数,该函数通过动态分配内存给这个结构来初始化一个矩阵。这是我编写的代码,但是当我尝试访问另一个函数或 main 中的 a->rows、cols 或元素时出现分段错误。
void matrixInit (Matrix* ma, int m, int n)
{ int i;
ma=(Matrix*)malloc(sizeof(Matrix));
ma->rows=m;
ma->cols=n;
ma->element=malloc(m*sizeof(int*));
for(i=0;i<m;i++)
{ma->element[i]=malloc(n*sizeof(int));
}
}
有什么帮助吗?
【问题讨论】:
-
ma的声明在哪里?为什么你有两个名为m的参数? -
是的。对不起。它最初被命名为 matx,我将其改为 m 以使其更简单。
-
您应该展示一个导致分段错误的访问示例。
-
现在应该是正确的
-
您需要传入一个指向矩阵的指针,以便调用者可以使用
malloced 指针。还要检查malloc是否不返回NULL,也不要强制转换第一个malloc(分配ma的那个)。