gcc版本会影响malloc等功能吗?

时间:2011-07-22 13:58:07

标签: c++ linux eclipse malloc

我正在尝试打开一个使用我不知道的版本开发的项目。 gcc 4.4已安装在我的red hat linux上。它给出了多个错误。其中一个是函数malloc ...它说“无效的参数。候选者是void * malloc(?)”..而我正在将一个整数变量传递给这个函数“malloc(size)”..可以任何一个帮助我有什么问题..

umair

4 个答案:

答案 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传递给某个东西。