在这种情况下,什么样的错误处理将很有用?

时间:2019-02-24 11:26:18

标签: c error-handling

我发现了一个片段,将其修改为以下代码。它为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);
}

0 个答案:

没有答案