我正试图打开一个使用我不知道的版本开发的项目。我的红帽linux上已经安装了GCC 4.4。它给出了多个错误。其中一个是malloc函数。它说"无效论证"候选人是无效的* malloc(?)"..当我传递一个整数变量到这个函数"malloc(size)"..有谁能告诉我是什么问题吗?
umair
比起malloc,您应该更喜欢使用c++的"new"one_answers"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强制转换。
在c++中使用malloc函数时需要强制转换。因为它默认返回void*。
char* chars ;
chars = (char*) malloc(10*sizeof(char));
^
|
gcc也用于c, g++用于c++,但我想这无关紧要。
gcc版本应该不会对malloc的操作方式产生任何影响。不过,较新的版本可能更迂腐。
这可能是因为返回值是"void*",而你使用的是"char*"指针。你可以使用强制类型转换:
char* p;
p = (char*) malloc( n );
你有一个语法错误。请给我们准确的线路号。这不是malloc的问题,编译器认为你试图传递malloc给某物