Bonjour,

Encore un pb.
je déclare dans un .h une structure ainsi:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
typedef struct
    {
    double nb_attacks;
    double *att_block;
    }*S_ATTACKS, Struct_ATTACKS;
puis dans une source voici mes fonctions d'allocation et de libération de mémoire pour S_ATTACKS:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
S_ATTACKS allouerS_ATTACKS(int l){
     S_ATTACKS A;
     A=(S_ATTACKS)malloc(sizeof(Struct_ATTACKS));
     A->nb_attacks=l;
     A->att_block=(double*)malloc(l*sizeof(double*));
     return A;
 }
 
 void libererS_ATTACKS(S_ATTACKS A){
	 free(A->att_block);
	 free(A);
 }
j'appelle une fonction qui retourne un type S_ATTACKS, dans cette fonction j'alloue de le mémoire pour S_ATTACKS par appel de allouerS_ATTACKS. après appel de la fonction je libère avec libererS_ATTACKS(S_ATTACKS A) sans pb de compile mais un blocage à l'execution.

voici donc l'appel et la libération:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
S_ATTACKS Atts;
...
Atts = Onset_detector3_matlabc(son);
libererS_ATTACKS(Atts);
...
voici la partie importante de Onset_detector3_matlabc():
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
S_ATTACKS Onset_detector3_matlabc(double *Xd_super_trame) {
 
...
sortie = allouerS_ATTACKS((int) Xd_length);
S_ATTACKS sortie;
...
 
return sortie;}
Cherchez l'erreur,
merci