Почему компилятор жалуется, когда я не делаю результат malloc?

Я проверяю код, который не требует явно выдавать результат вызова malloc, но всякий раз, когда я пытаюсь это сделать, компилятор выдает ошибку.

то есть.

char *somevar;
somevar = malloc(sizeof(char) * n); //error
somevar = (char *)malloc(sizeof(char) * n); // ok

Ответ 1

Это происходит, если вы используете компилятор С++ вместо компилятора C. Поскольку С++ требует явного литья. Проблема связана не только с (un) литьем результата malloc, но и с любым указателем void на другой указатель.

Ответ 2

Не запомнили ли вы включить прототип функции? Для malloc (3) это:

#include <stdlib.h>