G++ error: "malloc не был объявлен в этой области
Я использую g++ в Fedora для компиляции проекта 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)
Ответы
Ответ 1
Вы должны использовать new
в коде С++, а не в malloc
, поэтому вместо этого он будет new GLubyte*[RESOURCE_LENGTH]
. Когда вы #include <cstdlib>
загрузите malloc
в пространство имен std
, обратитесь к std::malloc
(или #include <stdlib.h>
).
Ответ 2
Вам нужно дополнительно включить. Добавьте <stdlib.h>
в список включенных.
Ответ 3
Воспроизвести эту ошибку в g++ на Fedora:
Как воспроизвести эту ошибку как можно проще:
Поместите этот код в main.c:
#include <stdio.h>
int main(){
int *foo;
foo = (int *) std::malloc(sizeof(int));
*foo = 50;
printf("%d", *foo);
}
Скомпилировать его, он возвращает ошибку времени компиляции:
[email protected]:~$ 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);
}
Затем он компилируется и запускается правильно:
[email protected]:~$ g++ -o s main.c
[email protected]:~$ ./s
50