Funkcja malloc rezerwuje dwa razy ten sam obszar pamięci

0

Mam taki problem w poniższym programie: malloc rezerwuje mi dwa razy ten sam obszar pamięci. Zwraca ten sam wskaźnik do obu tablic. Macie może pomysł jak rozwiązać ten problem?

#include <stdio.h>
#include <stdlib.h>

void tworzenie (int ***tab, int w, int k) 

{ 
  int **tab1;

  int l;

  *tab1=(int*) malloc(w*sizeof(int*));

  for (l=0; l<w; l++)
  {
       tab1[l]=(int*)malloc(k*sizeof(int));

  }

  *tab=tab1;
}

       
main() 
{ 
  int **tab1; 
  int **tab2;

  tworzenie (&tab1, 2, 2);

  tworzenie (&tab2, 4, 5);
  
  printf ("%i\n", &tab1[0][0]);
  printf ("%i", &tab2[0][0]);
  
} 
2

Ta linijka:

*tab1=(int*) malloc(w*sizeof(int*));

powinna wyglądać tak:

tab1=(int**) malloc(w*sizeof(int*));
0

Dzięki wielkie, straciłem na to cały dzień ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1