
Envoyé par
polonain2
1 2 3 4 5
| DLL1
void fct1 (StructPerso *part)
{...}
part->var = (char*)malloc(256*sizeof(char));
strcpy(part->var, "OK"); |
le cast du retour de malloc() est inutile sinon dangereux.
sizeof(char) renverra toujours 1.
je conseille :
part->var = malloc (256 * sizeof *part->var);

Envoyé par
polonain2
1 2 3 4 5
| DLL2
void fct2
{...}
if(part.var != NULL) free(part.var);
part.var = NULL; |
soit tu fais :
1 2 3 4 5
| if (part.var != NULL)
{
free (part.var);
part.var = NULL;
} |
soit tu peux faire :
1 2
| free (part.var);
part.var = NULL; |
et généralement on faît même :
free (part.var), part.var = NULL;
en revanche pour ton soucis de malloc/free, je trouve bizarre ce comportement sous windows, dans la mesure ou les DLL partagent le même espace d'adressage, il ne devrait pas y avoir de problème. J'attends les explications d'un gourou...
Partager