C - выделение матрицы в функции

Я пытаюсь выделить матрицу, используя функцию, которая принимает ее размеры и тройной указатель. Я выделил int ** (установлен в NULL), и я передаю его адрес в качестве аргумента функции. Это дает мне нарушение прав доступа по какой-то причине.

void allocateMatrix(int ***matrix, int row, int col)
{
    int i;
    if((*matrix = (int**)malloc(row * sizeof(int*))) == NULL)
    {
        perror("There has been an error");
        exit(EXIT_FAILURE);
    }
    for(i = 0; i < row; ++i)
    {
        if((*matrix[i] = (int*)malloc(col * sizeof(int))) == NULL)
        {
            perror("There has been an error");
            exit(EXIT_FAILURE);
        }
    }
}

/* main.c */

    int** matrix = NULL;
    allocateMatrix(&matrix, MATRIX_ROW, MATRIX_COL); //error

Ответы на вопрос(3)

Ваш ответ на вопрос