char* a;
a = (char*)malloc(1);

キャストしては駄目というのは
どういった理由からですか?