Bonjour,

J'ai remarqué un code sur le forum, mais j'arrive pas du tout à comprendre comment ça peut marcher.
Voici le code que l'on peut voir (http://www.developpez.net/forums/d84...#post4857991):
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
 
//création de la table de hachage
typedef tableauDynamique_struct tableHachage_struct[TAILLEHASH];
 
 
tableHachage_struct * CreerSimpleTableHachage()
{
	tableHachage_struct * THash = allocExit( sizeof * THash);
	size_t i;
	for(i=0;i<TAILLEHASH; i++)
	{
	TableauDynamique_struct_ctor(&THash[i]);
	}
	return THash;
}
Mon problème est le typedef, qui est fait de manière ( si j'ai bien compris ) à ce que le tableHashage_struct soit un tableau de TAILLEHASH de tableauDynamique_struct.

Bref, ça encore ça passe pas trop mal dans mon cerveau.

Après, on crée un pointeur dessus. Les pointeurs, normalement, j'ai pas de problème.
Par contre, c'est dans l'utilisation de ce pointeur, qui pointe donc sur un tableau de structure de tableauDynamique_struct.

Pour remettre le problème à sa simple expression j'ai fait ce programme:
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include <stdio.h>
#include <stdlib.h>

typedef struct MyStruct
{
	int x;
}MyStruct;

typedef MyStruct UltraStruct[100];

int main(int argc, char** argv)
{
	{
		MyStruct ms;
		ms.x = 5;
	}
	
	{
		UltraStruct* us = NULL;
		us = malloc ( sizeof(sizeof * us));
		
		if ( us == NULL )
		{
			printf("Erreur while allocating memory\n");
			return -1;
		}
		else
		{
			int i = 0; 
			
			for ( i = 0 ; i < 100 ; i++ )
			{
				/* Ici j'ai un problème */
				(*us)[i].x = i;
			}
			
			/*us*/
		
			free(us);
		}
	}
	
	{
		UltraStruct us;
		int i = 0;
		
		for ( i = 0 ; i < 100 ; i++ )
		{
			us[i].x = i;
		}
	}
	
	return 0;
}
Voilà, mon code me semble bon, sauf la ligne ou j'ai mis le commentaire que j'avais un problème.
Comment on remplit les éléments, de ce qui me semble un pointeur sur un tableau.

Pour verifier les erreurs ( les seg faults ne se produisent pas toujours lorsque l'on dépasse la mémoire allouées ) j'utilise gdb ( debugguage ) et valgrind ( vérification mémoire ).

Merci pour votre aide future ( je suis sur que c'est vraiment un problème dans mon cerveau ).