我正在尝试打开一个使用我不知道的版本开发的项目。 gcc 4.4已安装在我的red hat linux上。它给出了多个错误。其中一个是函数malloc ...它说“无效的参数。候选者是void * malloc(?)”..而我正在将一个整数变量传递给这个函数“malloc(size)”..可以任何一个帮助我有什么问题..
umair
答案 0 :(得分:5)
您应该更喜欢在malloc上使用C ++“new”和“delete”运算符。如果出现错误,malloc返回0,new会抛出异常(我认为这是“好”方法)
http://www2.research.att.com/~bs/bs_faq2.html#malloc
否则,malloc的原型是:
void * malloc(size_t size);
所以要分配一个int,你会:
int * my_int =(int *)malloc(sizeof(int));
你需要通过“(int *)”转换“malloc”的结果是因为malloc返回一个void *。 C ++不允许将void *赋给int *。如果您愿意,可以使用C ++ static_cast而不是C cast。
答案 1 :(得分:0)
在c ++中使用时,需要强制转换malloc函数。因为它默认返回void *。
char* chars ;
chars = (char*) malloc(10*sizeof(char));
^
|
同样对于gcc而言c和g ++用于c ++,但这无关紧要。
答案 2 :(得分:0)
gcc版本不应该对malloc的运行方式产生任何影响。新版本可能更迂腐。
这可能是因为返回值是'void *'而你正在使用'char *'指针。您可以使用演员:
char* p;
p = (char*) malloc( n );
答案 3 :(得分:0)
你在某处有语法错误。请给我们确切的行号。这对malloc来说不是问题,编译器认为你试图将malloc传递给某个东西。