使用malloc会导致错误

use malloc leads to error

本文关键字:错误 malloc 使用      更新时间:2023-10-16

我正试图将一些代码从目标c翻译为非托管c++我有这个操作

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

错误:表达式必须有指针类型?同样的错误出现在下面的代码

ir->buffer = malloc( bufferSize );

你能给我提供malloc在这个非托管c++中的正确用法吗?

malloc()返回可能导致此问题的void *。可以强制转换返回值:

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

或者,如果你正在使用c++,你应该使用new代替:

Buffer *ir = new Buffer;

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

Try

Buffer *ir = (Buffer*) malloc (sizeof(Buffer));
然而,更好的c++方法是在Buffer类中有一个构造函数,然后使用像 这样的东西。
Buffer *ir = new Buffer;

或者(如果构造函数接受一些参数)

Buffer *ir = new Buffer(args);

我强烈建议您在c++中使用new而不是malloc。Malloc完全不知道构造函数,使用' new '通常被认为是一个很好的做法(因此它是' delete '的孪生)。

请确保不要使用malloc与delete或new与free,我已经看到它可以做什么,让我告诉你,这是不愉快的