"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Pourquoi `malloc()` provoque-t-il une erreur « Conversion invalide » en C++ ?

Pourquoi `malloc()` provoque-t-il une erreur « Conversion invalide » en C++ ?

Publié le 2024-11-08
Parcourir:861

 Why Does `malloc()` Cause an \

Problème d'allocation de Malloc : Comprendre l'erreur de « conversion non valide »

Le code fourni introduit un problème courant lors de la tentative d'allocation de mémoire à l'aide de malloc( ). L'erreur provient de l'affectation de la valeur de retour de malloc() directement à un pointeur char sans conversion appropriée.

La fonction malloc() réserve un bloc de mémoire dans le tas et renvoie un pointeur vide générique. Cependant, le code attribue ce pointeur à un pointeur char sans conversion de type explicite. Cette incompatibilité déclenche l'erreur de compilation « conversion invalide de void en char`. »

Résolution de l'erreur de conversion

Pour résoudre ce problème, vous doit explicitement convertir la valeur de retour de malloc() en type souhaité. Dans ce cas, vous devez effectuer un cast vers un pointeur char. La déclaration correcte devrait ressembler à ceci :

char *foo = (char*)malloc(1);

Cette opération de conversion convertit explicitement le pointeur vide générique renvoyé par malloc() vers un pointeur char.

G Warning

Le message d'erreur mentionne l'utilisation de g avec CodeBlocks et soulève la question de savoir si la compilation du fichier en tant que fichier .cpp est importante. La réponse est oui. Le code compilé avec g est par défaut au standard C, ce qui nécessite le casting indiqué ci-dessus. Cela garantit que le compilateur gère strictement les conversions de types et évite les problèmes potentiels ou les comportements non définis.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3