Bonjour,
Encore un pb.
je déclare dans un .h une structure ainsi:
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 typedef struct { double nb_attacks; double *att_block; }*S_ATTACKS, Struct_ATTACKS;
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.
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); }
voici donc l'appel et la libération:
voici la partie importante de Onset_detector3_matlabc():
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); ...
Cherchez l'erreur,
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;}
merci
Partager