Bonjour,
Dans mon projet personnel, je développe un petit moteur 2D/3D, pour cela je développe différentes DLL je m'explique:
par exemple le fichier Core.dll contient des fonctions sur les listes chaînées, les piles,table de hashage, des fonctions manipulations des matrices, bref pas mal de choses, il m'arrive parfois d'utiliser des variables globales, par exemple pour le cas de la pile des matrices(comme sur openGL) voici un exemple du fichier
Donc le problème se pose lorsque j'utilise les différents DLL, j'ai des segfault non pas a cause d'un malloc ou d'un free.
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 static MatrixStack projection; static MatrixStack modelview; static MatrixStack* current_stack; ....... void CORE_API MatrixInit(void) { Matrix4 identity; Matrix4SetIdentity(&identity); MatrixStackInit(&projection); MatrixStackInit(&modelview); MatrixStackPush(&projection,&identity); MatrixStackPush(&projection,&identity); MatrixStackPush(&modelview,&identity); MatrixStackPush(&modelview,&identity); current_stack=&modelview; } void CORE_API MatrixMode(ENUM_MATRIX_TYPE mode) { switch(mode) { case EMT_MODELVIEW: current_stack = &modelview; break; case EMT_PROJECTION: current_stack = &projection; break; default: break; } } etc ....
Lorsque je debug mon programme(j'utilise codeblocks) quand je je "watch" mes variable je remarque les valeurs changent toutes seules en executant le debugage en mode pas à pas.
Donc voila je voudrais savoir est ce que les variables globales provoquent ce genre de problème et est ce qu'il y a une autre alternatif pour éviter les variables globals voila merci d'avance
Partager