我正在尝试将一些代码从目标c转换为非托管c ++ 我有这个操作
Buffer* ir =malloc( sizeof( Buffer ) );
错误:表达式必须有指针类型? 同样的错误进入了这段代码
ir->buffer = malloc( bufferSize );
请您在这个非托管c ++中正确使用malloc
吗?
答案 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,但我已经看到它可以做什么,让我告诉你它不愉快。