79 votes

Impossible de libérer les pointeurs const en C

Comment puis-je libérer un ? J’ai alloué une nouvelle mémoire en utilisant, et lorsque j’essaie de la libérer, je reçois toujours l’erreur « type de pointeur incompatible »

Le code qui cause cela est quelque chose comme :

102voto

Michael Mrozek Points 44120

Plusieurs personnes ont posté la bonne réponse, mais elles continuent à la supprimer pour une raison quelconque. Vous devez le lancer sur un pointeur non const; prend un, pas un ``:

6voto

Paul R Points 104036

Cela n’a aucun sens de malloc un pointeur vers const, puisque vous ne pourrez pas modifier son contenu (sans hacks laids).

FWIW cependant, gcc donne juste un avertissement pour ce qui suit:

Quel compilateur utilisez-vous ?

4voto

nlstd Points 21

Il y a des cas où vous souhaitez libérer un fichier . Cependant, vous ne voulez pas le faire à moins que vous ne l’allouiez / l’asigniez dans la même fonction. Sinon, vous êtes susceptible de casser des choses. Voir le code ci-dessous pour un exemple concret. J’utilise dans les déclarations de fonction pour montrer que je ne modifie pas le contenu des arguments. Cependant, il est réaffecté avec un duplicata en minuscules (strdup) qui doit être libéré.

3voto

Puppy Points 90818

Il n’y a aucun but à lancer un pointeur malloc’d à const. Toute fonction qui prend un pointeur const ne doit pas être responsable de la libération de la mémoire qui lui a été transmise.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X