Witam. Mam pewien problem, którego nie mogę rozwiązać... Potrzebuję dynamicznie zaalokować tablicę 2-wymiarową, tylko chciałbym, aby alokacja odbywała się w innej funkcji. Mam wcześniej zadeklarowane 3 tablice wskaźników. W mainie wczytuję wysokość i szerokość tablicy (zmienne globalne), potem chciałbym przekazać do funkcji te 3 tablice i tam je zaalokować. Funkcję wywołuję tak:
alokacja(tab1,tab2,tab3);
A jej definicja wygląda następująco:
int alokacja(int **tab1,int **tab2,int **tab3)
{
tab1=(int**)malloc(N*sizeof(int*));
tab2=(int**)malloc(N*sizeof(int*));
tab3=(int**)malloc(N*sizeof(int*));
if((tab1 || tab2 || tab3) == NULL)
return -1;
for(i=0;i<M;i++)
{
tab1[i]=(int*)malloc(M*sizeof(int));
tab2[i]=(int*)malloc(M*sizeof(int));
tab3[i]=(int*)calloc(M,sizeof(int));
if((tab1 || tab2 || tab3) == NULL)
return -1;
}
}
Program się kompiluje, ale alokacja nie przebiegła prawidłowo, gdyż przy próbie wpisania czegoś do tablicy, program kończy się błędem
Additional information: Odwołanie do obiektu nie zostało ustawione na wystąpienie obiektu.
.
Czy to ja coś źle robię, czy nie można alokować pamięci w ten sposób?