2D динамический массив в C push () возможен всего в 3 раза - PullRequest
0 голосов
/ 28 февраля 2019

У меня есть двумерный динамически размещенный массив в C и функция push () (creaMatri ()), которая добавляет новый элемент с указанным количеством субэлементов.Функция работает для первых трех вызовов, как талисман, но для четвертого возвращает ошибку:

realloc (): недопустимый старый размер

void creaMatri(int***arr,int*size,int**dim) {
    int** tmp=realloc(*arr,(*size+1)*sizeof(int));
    if (tmp==NULL) exit(100);
    tmp[*size]=calloc(dim[*size][0]*dim[*size][1],sizeof(int32_t));
    **arr=*tmp;
    (*size)=*size+1;
}

int main() {
    int** matri=malloc(0);
    int matriSIZ=0;

    //code

    creaMatri(&matri,&matriSIZ,sizes);
}

типоразмеры - это двумерный массив, содержащий числа, необходимые для определения количества подэлементов, которые должен выделить push ().

...