J'utilise g ++ sous Fedora pour compiler un projet openGL, qui a la ligne:
textureImage = (GLubyte**)malloc(sizeof(GLubyte*)*RESOURCE_LENGTH);
Lors de la compilation, une erreur g ++ indique:
error: ‘malloc’ was not declared in this scope
L'ajout de #include <cstdlib>
Ne résout pas l'erreur.
Ma version g ++ est: g++ (GCC) 4.4.5 20101112 (Red Hat 4.4.5-2)
Vous devez utiliser new
dans le code C++ plutôt que malloc
pour qu'il devienne new GLubyte*[RESOURCE_LENGTH]
au lieu. Quand vous #include <cstdlib>
il chargera malloc
dans l'espace de noms std
, donc référez-vous à std::malloc
(ou #include <stdlib.h>
au lieu).
Vous avez besoin d'une inclusion supplémentaire. Ajouter <stdlib.h>
à votre liste d'inclusions.
Comment reproduire cette erreur le plus simplement possible:
Mettez ce code dans main.c:
#include <stdio.h>
int main(){
int *foo;
foo = (int *) std::malloc(sizeof(int));
*foo = 50;
printf("%d", *foo);
}
Compilez-le, il renvoie une erreur de temps de compilation:
el@apollo:~$ g++ -o s main.c
main.c: In function ‘int main()’:
main.c:5:37: error: ‘malloc’ was not declared in this scope
foo = (int *) malloc(sizeof(int));
^
Fixez-le comme ceci:
#include <stdio.h>
#include <cstdlib>
int main(){
int *foo;
foo = (int *) std::malloc(sizeof(int));
*foo = 50;
printf("%d", *foo);
free(foo);
}
Ensuite, il se compile et s'exécute correctement:
el@apollo:~$ g++ -o s main.c
el@apollo:~$ ./s
50