我遇到想写具有以下功能分配矩阵(段错误exc_bad_access
和kern_invalid_address
)的第二排,当一个问题:二维矩阵分配功能段错误(由PARAM返回矩阵)
这里是我的页头功能:
int amatrix(char*** m, const int i, const int j)
{
int k;
(*m) = (char**) malloc(sizeof(char*) * i);
if ((*m) == NULL) {
return ERROR;
}
for (k = 0; k < i; k++) {
(*m)[k] = (char*) malloc(sizeof(char) * j);
if ((*m)[k] == NULL) {
return ERROR;
}
}
return SUCCESS;
}
我把它用:
char** matrix;
if (amatrix(&matrix, i, j)) { ...
编辑: 根据要求:
#define ERROR 00
#define SUCCESS 01
的访问,其中的麻烦是:
int gmatrix(char*** m, const int i, const int j)
{
int k, l;
for (k = 0; k < i; k++) {
for (l = 0; l < j; l++) {
printf("Matrix[%d][%d] = ", k, l);
scanf(" %c", m[k][l]);
}
}
return SUCCESS;
}
谢谢你快速作出回应!
你能共享一个完整的例子(包括''ERROR'and值SUCCESS',代码试图写入分配矩阵,...)? –
我们可以看到您的访问权限吗?这里一切似乎都很好。 – md5
我会声明一个2d字符数组为'char c2d [42] [43]'。或者分配它'char * pc2d = calloc(42 * 43,1)' – alk