我发现了一个片段,将其修改为以下代码。它为char的二维数组分配和取消分配内存。工作正常。 不幸的是,由于我是一个全新成员,所以我不能对原始线程提出其他问题。 如果有人可以给我简短的建议怎么办...
当函数在成功的情况下需要返回char *时,应如何执行错误处理(返回-1或已定义的语句)?
我最感兴趣的问题是: 完全使用返回值来实现错误处理是一种好习惯吗?
我考虑过为各种可能的错误修改全局变量,并且还在我的书中读到有关我的问题的C语言。但是似乎只有社区可以告诉我,这是在实际应用中的一种良好做法。
char* allocate_mem_2d(char*** arr, int n, int m)
{
*arr = (char**)malloc(n * sizeof(char*));
char *arr_data = malloc( n * m * sizeof(char));
for(int i=0; i<n; i++)
{
(*arr)[i] = arr_data + i * m ;
if (*arr == NULL || (*arr)[i] == NULL)
{
//What kind of error handlung is useful?
//I can not return "EXIT_FAILURE", because
// of char* return-value
perror("Error while allocating 2d array!");
return EXIT_FAILURE;
}
return arr_data; //free pointer
}
void deallocate_mem_2d(char*** arr, int* arr_data)
{
free(arr_data);
free(*arr);
}