我制作了一个返回指向新创建矩阵的指针的函数。现在我想让这个函数返回类型为
status_t
的错误代码,而不是指针。为了实现这一点,必须添加另一个指针级别,并通过引用返回矩阵。然而,我不明白为什么会出现分段错误。这是我的工作代码的一部分(a),以及我的失败尝试(b):
(a)
int **create_matrix(size_t dimension) {
int **p;
size_t e;
size_t h;
if (dimension == 0)
return NULL;
for (h = 0; h < dimension; ++h) {
if ((p[h] = malloc(dimension * sizeof(int))) == NULL) {
for (e = h; e >= 0; --e) {
free(p[e]);
p[e] = NULL;
} <-------- missing closing brace
return NULL;
}
}
return p;
}
(b)
status_t create_matrix(size_t dimension, int ***p) {
size_t e;
size_t h;
if (p == NULL)
return ERROR_NULL_POINTER;
for (h = 0; h < dimension; ++h) {
if (((*p)[h] = malloc(dimension * sizeof(int))) == NULL) {
for (e = h; e >= 0; --e) {
free((*p)[e]);
(*p)[e] = NULL;
} <-------- missing closing brace
return ERROR_NO_MEMORY;
}
}
}
谢谢!
free()
函数? - Andrew Henle