Bonjours, je souhaite créer une fonction qui permettra de créer un tableau à 2 dimension en ayant un type void en paramètre et qui retournera un pointeur void.

Le problème c'est que j'ai un message d'erreur : "imcompatible pointeur type, assignement from incompatible pointeur type".
Je n'arrive pas a trouver la solution pour que mon code marche. Pour un tableau a une dimension sa marche mais pour 2 impossibles.

voici mon code :

Dans le main :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
    char **tab=NULL;
 
    tab=alloc_2d(tab,10,10);
Dans mon .h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 
void **alloc_2d(void **_ptr,int size1,int size2)
{
  int i;
  void **ptr=(void**)_ptr;/*cette ligne est pour que le compilo accepte le void pour 1 tableau a
                                 une dimenssion sa marche en enlevant 1 étoile (void *ptr=(void*)_ptr;)*/
 
assert(size1>0);
assert(size2>0);
 
  ptr=malloc(size1*sizeof(ptr));
  if(malloc_error(ptr)==NULL)  /*malloc_error est une fonction qui envoi un message d'erreur et qui retourne le pointeur envoyer*/
    {
      free_alloc(ptr); 
      return ptr;
    }
 
  for(i=0;i<size1;i++)
    {
      ptr[i]=malloc(size2*sizeof(ptr[i]));
      if(malloc_error(ptr[i])==NULL)
	{
	  for(i=i-1;i>=0;i--)
	    free_alloc(ptr[i]);
	  free_alloc(ptr);
	  return ptr;
	}
    }
  return ptr;
}