Fedoraでg ++を使用して、次の行があるopenGLプロジェクトをコンパイルしています。
_textureImage = (GLubyte**)malloc(sizeof(GLubyte*)*RESOURCE_LENGTH);
_
コンパイルするとき、g ++エラーは言います:
_error: ‘malloc’ was not declared in this scope
_
_#include <cstdlib>
_を追加してもエラーは修正されません。
私のg ++バージョンは:g++ (GCC) 4.4.5 20101112 (Red Hat 4.4.5-2)
C++コードでは、new
ではなくmalloc
を使用する必要があります。したがって、new GLubyte*[RESOURCE_LENGTH]
代わりに。 #include <cstdlib>
malloc
を名前空間std
にロードするので、std::malloc
(または#include <stdlib.h>
代わりに)。
追加のインクルードが必要です。追加 <stdlib.h>
インクルードのリストに。
このエラーをできるだけ簡単に再現する方法:
このコードをmain.cに配置します:
#include <stdio.h>
int main(){
int *foo;
foo = (int *) std::malloc(sizeof(int));
*foo = 50;
printf("%d", *foo);
}
コンパイル、コンパイル時エラーを返します:
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));
^
このように修正:
#include <stdio.h>
#include <cstdlib>
int main(){
int *foo;
foo = (int *) std::malloc(sizeof(int));
*foo = 50;
printf("%d", *foo);
free(foo);
}
その後、コンパイルして正常に実行されます:
el@apollo:~$ g++ -o s main.c
el@apollo:~$ ./s
50