Bonsoir,

J'ai un petit probleme dans un programme que je fais sous linux, j'utilise des variables allouer dynamiquement, auquel j'attribue des valeurs lus dans des fichiers. Le problème viendrais des descripteurs de fichiers

je déclare mes variables comme ceci, dans une fonction appeller plusieurs fois:

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
 
int startDeamon()
{
char *IP=NULL, *date_search=NULL, *date_lastModif=NULL, *date_lastScan=NULL, *SRCip={"SRC"}, *buff_file=NULL;
  FILE *file_ulog=NULL, *file_out=NULL;
 
 ...
 
file_ulog=fopen(FILE_ULOG,"r");
  	if (file_ulog == NULL ) exit(1);
 
  date_search=scalloc(24);
 
  date_lastScan=scalloc(24);
 
  date_lastModif=scalloc(24);
 
   if ( stat(FILE_ULOG, &mystat) == -1) { perror("stat"); exit(EXIT_FAILURE);} 
  strftime(date_lastModif, 25, "%c", localtime(&mystat.st_mtime));
 
  if ( ( file_out=fopen(FILE_OUT,"r") ) == NULL )
  {
...
Plus loin a la fin de la fonction je dois fermer les descripteur et libérer la mémoire allouer:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
free(date_search);
free(date_lastModif);
free(date_lastScan);
 
date_search=NULL;
date_lastModif=NULL;
date_lastScan=NULL;
 
if(file_ulog != NULL)
    fclose(file_ulog);
 
if(file_out != NULL)
   fclose(file_out);
Et la ca plante au niveau du fclose(file_out) si j'ai écris dans file_out, j'ai droit à ce message d'erreur:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
*** glibc detected *** free(): invalid next size (normal): 0x0804de68 ***
Avez vous une idée?

Merci de votre aide