Bonjour,
J'ai 2 projets réunis dans un workspace :
1) un projet "Win32 Console Application" : binbcxtp3
2) un projet "Win32 Dynamic-Link Library" : liblcxxli
binbcxtp3 utilise des fonctions de liblcxxli.
Lorsque je lance mon programme en mode Debug, j'ai un "User breakpoint" et lorsque je lance en mode Release, je n'ai aucun problème.
Je ne comprends pas pourquoi ? Cela m'empêche de debugger mon programme en se mettant en mode debug.
Le code ci-dessous permet reproduire le problème :
Projet binbcxtp3 :
Projet liblcxxli :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 int main(int argc,char *argv[]) { struct SC_XLI01 *pXLI01; struct SC_SQL01 *pSQL01; pXLI01 = pC_XLI_GetNewTabOf(4); pSQL01 = (struct SC_SQL01 *) malloc(sizeof(struct SC_SQL01)); C_XLI_AddToTab_BC(pXLI01,(void *)pSQL01); C_XLI_DisposeTabWithFreePtrs(pXLI01); return 0; }
Lorsque je lance en mode pas à pas mon prog, ca plante au niveau de la fonction C_XLI_DisposeTabWithFreePtrs.
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 /* Alloue un tableau de pointeur */ FCT_EXP struct SC_XLI01 *pC_XLI_GetNewTabOf(unsigned int _iNbPtrs) { struct SC_XLI01 * scPtrRetour = NULL; void **newPtrTab = NULL; /* Allocation structure principale d'un tableau */ scPtrRetour = malloc (sizeof(struct SC_XLI01)); /* Allocation des ptr de données */ newPtrTab = malloc(_iNbPtrs * sizeof(void *)); scPtrRetour->ptab = newPtrTab; return scPtrRetour; } FCT_EXP void C_XLI_AddToTab_BC(struct SC_XLI01 *_scPtr,struct SC_SQL01 * _iPtrInsert) { _scPtr->ptab[0] = _iPtrInsert; } FCT_EXP void C_XLI_DisposeTabWithFreePtrs(struct SC_XLI01 *_scPtr) { free((struct SC_SQL01 *) _scPtr->ptab[0]); }
Je suppose que le fait :
- d'allouer mon tableau de la DLL
- et d'allouer un élément du tableau dans l'EXE
- et de désallouer mon tableau et ses éléements dans la DLL
pose problème car je n'ai AUCUN problème si je colle les fonctions de liblcxxli dans mon projet binbcxtp3.
Quelqu'un a-t-il une idée ?
Merci d'avance.
Kévin.
Partager