Ответ 1
Это происходит, если вы используете компилятор С++ вместо компилятора C. Поскольку С++ требует явного литья.
Проблема связана не только с (un) литьем результата malloc
, но и с любым указателем void на другой указатель.
Я проверяю код, который не требует явно выдавать результат вызова malloc, но всякий раз, когда я пытаюсь это сделать, компилятор выдает ошибку.
то есть.
char *somevar;
somevar = malloc(sizeof(char) * n); //error
somevar = (char *)malloc(sizeof(char) * n); // ok
Это происходит, если вы используете компилятор С++ вместо компилятора C. Поскольку С++ требует явного литья.
Проблема связана не только с (un) литьем результата malloc
, но и с любым указателем void на другой указатель.
Не запомнили ли вы включить прототип функции? Для malloc (3) это:
#include <stdlib.h>