Je travaille sur les listes de matrices dynamiques en c. J'ai des problèmes lorsque j'essaie de ré-ajouter un élément à une arracheliste après la réplocalisation de la distribution.
STRIT: P>
array_list_insert(array,8); array_list_free(array); array_list_insert(array,8); // <--- Segmentation Fault
3 Réponses :
Le problème (au moins a em> problème) est ce array_list_free Free le Array_List_T CODE> objet lui-même, pas seulement le tableau dynamique interne:
free(array);
Merci beaucoup! J'ai réparé le problème (et je suis tellement honte à ce sujet ^^ '') merci encore :)
gros problème ici: retirez les trois lignes commençant par tableau -> code> de la fonction. P> p>
sans Exemple vérifiable compilable minimal em> inclus dans votre message sera limité aux suggestions générales: Un problème potentiel est que le prototype: p> doit être modifié pour accueillir un pointeur sur l'objet qui doit être donné mémoire: P> typedef struct array_list{
size_t size;
size_t capacity;
struct array_list *array //this becomes new nodes of your list.
}ListNode;
Pouvez-vous s'il vous plaît Modifier Votre question et transformer vos morceaux de code en un Exemple de reproductible minimal ?
Vous
gratuit code> un pointeur puis directement après l'utilisation?
Dans
array_list_free code>, vous
libres code>
tableau code>, mais définissez des valeurs dans cette structure.
array_list_insert (tableau, 8); code> ne doit pas compiler, le deuxième paramètre de
array_list_insert code> attend un
vide * code> mais vous fournissez un
int < / code>. Veuillez poster du code réel et non quelques morceaux de code patché ensemble.
Oui et non, @jabberwocky. La langue exige une conversion explicite là-bas, mais c'est une extension relativement courante pour effectuer la conversion implicitement.