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