Bonjour,
Je travaille actuellement sur un projet d'optimisation en C++. Mon code compile, mais ne tourne pas car il rencontre un segfault.
Voilà comment ca se passe. J'ai (entre autres) des clients et des requetes. Chaque client peut avoir plusieurs requetes, et chaque requete provient d'un seul client.
Dans la classe Request, j'ai donc un membre qui est un pointeur vers Client, et dans Client, un vector de pointeurs vers Request. Tout ca evidemment avec des forward-declaration pour que ca compile.
Maintenant le hic: quand j'importe mon fichier de conf, je cree un Client, puis les Request qui vont avec. J'appelle le constructeur de Client avec new, et je mets le pointeur dans un vector. Puis je boucle sur tous les Request, en appelant le constructeur de Request avec new et en ajoutant le pointeur dans un vecteur. Puis j'appelle la methode add_request de client, qui prend un pointeur vers Request, et l'ajoute dans le vector de Client, suivi de la methode add_client de Request, qui prend un pointeur vers Client et met a jour son membre correspondant. Et là, pour verifier, je regarde si l'id du client du dernier Request du vecteur de Request est egal à l'id du Client en cours (en principe j'aurais pu comparer les pointeurs, mais bon). Et j'ai un segfault sur l'accès au Client dans le Request. Valgrind me dit que la memoire n'est pas allouée.
Je mets le code correspondant en dessous, il y a peut-etre une erreur completement bete (c'est meme quasi sur)
Voilà, je crois que tout y est. Valgrind me dit que c'est lors de l'appel de get_client() que ca foire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
Honnetement je suis assez mystifié. Je suis persuadé de louper un truc, mais je ne sais pas quoi.
Si vous avez des pistes, je suis donc preneur!
Merci d'avance!

 

 
		
		 
        

 
			
			

 
   


 Tableaux de pointeurs et segfault
 Tableaux de pointeurs et segfault
				 Répondre avec citation
  Répondre avec citation
Partager