Вы должны предпочитать использовать операторы C ++ "new" и "delete" вместо malloc. malloc возвращает 0 в случае ошибки, new создает исключение (которое я считаю «хорошим» подходом)
http://www2.research.att.com/~bs/bs_faq2.html#malloc
В противном случае, прототип для malloc:
void * malloc (размер size_t);
Итак, чтобы выделить int, вы бы:
int * my_int = (int *) malloc (sizeof (int));
Причина, по которой вам нужно привести через "(int *)" результат "malloc", заключается в том, что malloc возвращает void *. C ++ не разрешит присваивать void * int *. Вы можете использовать C ++ static_cast вместо C cast, если хотите.