使用malloc会导致错误

时间:2011-11-21 08:58:53

标签: c++ malloc

我正在尝试将一些代码从目标c转换为非托管c ++ 我有这个操作

Buffer* ir =malloc( sizeof( Buffer ) );

错误:表达式必须有指针类型? 同样的错误进入了这段代码

ir->buffer = malloc( bufferSize );

请您在这个非托管c ++中正确使用malloc吗?

3 个答案:

答案 0 :(得分:6)

malloc()会返回void *,这可能导致此问题。你可以投下回报:

Buffer *ir = (Buffer *)malloc(sizeof(Buffer));

或者,如果您使用的是C ++,则应使用new代替:

Buffer *ir = new Buffer;

(如果您这样做,请不要忘记将free()更改为delete

答案 1 :(得分:1)

尝试

Buffer *ir = (Buffer*) malloc (sizeof(Buffer));

然而,更好的C ++方法是在Buffer类中使用构造函数,然后使用类似

的内容
Buffer *ir = new Buffer;

或者(如果构造函数采用一些参数)

Buffer *ir = new Buffer(args);

答案 2 :(得分:0)

我强烈建议你在c ++中使用new而不是malloc。 Malloc完全没有意识到构造函数,并且使用“new”(因此它是双胞胎“删除”)通常被认为是一种好习惯。

请确保不使用带有删除的malloc或带有免费的new,但我已经看到它可以做什么,让我告诉你它不愉快。