次の関数で割り当てられた行列の2番目の行(segfaultexc_bad_access
と)を書き込もうとすると問題が発生します。kern_invalid_address
これが私の割り当て関数です:
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;
}
迅速な返信ありがとうございます!