Bonjour,

J'ai un petit problème avec l'allocation et la libération de cette structure:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
    typedef struct AudioMegaConvertPlugin {
        char filtreOpen[size...];
        char filtreSave[size...];
        /* .... */
    }  AudioMegaConvertPlugin, * lpAudioMegaConvertPlugin;
Enfait, le problème est pendant l'allocation et après pour la libération, je ne suis pas sûr que mon code soit juste.
Je veux allouer autant de structures que j'en ai besoin, donc à chaque boucle, j'en alloue une nouvelle, voila la code:
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
27
28
29
AudioMegaConvertPlugin **amCplugin = {NULL};
/* ou (lpAudioMegaConvertPlugin  *amCplugin) */
amCplugin = malloc(sizeof(AudioMegaConvertPlugin*));
 
/* ======== BOUCLE */
/* Quand je veux une nouvelle structure, je fais */
*amCplugin = malloc(sizeof(AudioMegaConvertPlugin));
 
/* Puis je veux par exemple remplir le membre 'filtreOpen' et le membre 'filtreSave' (ici par l'appel d'un plugin) */
dllStartV((*amCplugin)->filtreOpen, (*amCplugin)->filtreSave);
 
/* Maintenant, je veux une nouvelle structure sur le meme
   pointeur donc, je fais: (C'EST LA QU'IL Y A UN PROBLEME) */
++amCplugin;
/* Et je recommence comme au dessus, malloc(), etc. */
/* ======== FIN BOUCLE */
 
 
/* ======== Puis arrive a la fin du programme, (2eme PROBLEME...)
  je veux liberer ce fameux truc... 
  donc, je fais tant que (*amCplugin  != NULL) free(amCplugin);
  Mais je ne sais pas "où commence" "amCplugin" (emplacement memoire)
  alors j'ai enregistre au debut du programme sa valeur par la variable
  PluginAdress, comme cela: (PluginAdress = (int) amCplugin;) */
 
    for(amCplugin = (int) PluginAdress ;
        *amCplugin != NULL ; free(*amCplugin), ++amCplugin) ;
/* Mais mon compilo n'a pas l'air de trouver ca marrant, il me sort:
   [Warning] assignment makes pointer from integer without a cast */
Si quelqu'un pourrait me dire comment faire une libération correcte et une allocation correcte car le "++amCplugin;" ne me semble pas correct, d'ailleur j'ai testé avec beaucoups de boucles et j'ai eu:
Runtime Error!

Program : E:\[AudioMega]\scr\AudioMega.exe

This application has requested the Runtime to terminate it in an unsual way.
Please contact the application's support team for more information.
quand je faisais le "++amCplugin;"



Merci