g++ erreur: ‘malloc’ n'a pas été déclarée dans ce champ d'application
J'utilise g++ sous Fedora pour compiler un openGL projet, qui a la ligne:
textureImage = (GLubyte**)malloc(sizeof(GLubyte*)*RESOURCE_LENGTH);
Lors de la compilation, g++ erreur dit:
error: ‘malloc’ was not declared in this scope
Ajoutant #include <cstdlib>
n'est pas corrigé l'erreur.
Mon g++ version: g++ (GCC) 4.4.5 20101112 (Red Hat 4.4.5-2)
Êtes-vous d'utiliser les espaces de noms? Est vous malloc code dans un espace de noms?
Êtes-vous sûr que le projet doit être compilé avec g++?
Êtes-vous sûr que le projet doit être compilé avec g++?
OriginalL'auteur Ovilia | 2011-08-10
Vous devez vous connecter pour publier un commentaire.
Vous devez utiliser
new
dans le code C++ plutôt quemalloc
de sorte qu'il devientnew GLubyte*[RESOURCE_LENGTH]
à la place. Lorsque vous#include <cstdlib>
il va chargermalloc
dans l'espace de nomsstd
, reportez-vous àstd::malloc
(ou#include <stdlib.h>
à la place).malloc
-comme la fonction, en C++, l'utilisation de la fonctionoperator new
, qui s'interface avec le reste du système de mémoire (il lève des exceptions, appelle le nouveau gestionnaire, si la mémoire ne peut pas être trouvé, etc.)Depuis l'utilisation de
#include <stdlib.h>
vidages de déclarer tous les noms dans l'espace de noms global, la préférence devrait être d'utiliser#include <cstdlib>
, sauf si vous avez besoin de compatibilité avec C.Comme je le comprends,
#include <cstdlib>
d'importationmalloc
et amis dans lestd
espace de noms, et peut ou peut ne pas importer dans l'espace de noms global, tandis que#include <stdlib.h>
va les importer dans l'espace de noms global, et peut ou ne peut pas les importer dans lestd
espace de noms.OriginalL'auteur user786653
Vous besoin d'un supplément incluent. Ajouter
<stdlib.h>
à votre liste de comprend.OriginalL'auteur dragonroot
Reproduire cette erreur en g++ sur Fedora:
Comment reproduire cette erreur aussi simplement que possible:
Mettre ce code dans le main.c:
Compiler, il renvoie une erreur de compilation:
Corriger comme ceci:
Puis il compile et s'exécute correctement:
L'erreur que vous affichez n'est pas liée à la fonction malloc, sujet abordé dans mon post. Si vous avez une nouvelle question, veuillez utiliser la fonction "Ajouter une Question" bouton dans le coin supérieur droit.
ok mais pourquoi malloc retourne vide dans mon cas
malloc renvoie toujours nulle. Veuillez ne pas poster de suivi des questions sur les réponses qui n'ont rien à voir avec votre problème.
OriginalL'auteur Eric Leschinski