如何使用' new'而不是' malloc'在代码中

时间:2014-12-26 12:17:35

标签: c++ malloc type-conversion

我的代码如下所示

SP->xs = malloc(size * sizeof(double));

其中xs是结构变量,sizeint类型,

所以我在这里如何使用new代替malloc

我应该包含哪个头文件?以及这个新行的语法将如何形成?

我刚尝试过,如下所示

SP->xs = operator new sizeof(double)*[size];

当我编译此代码时,会出现一些错误,如下所示

error: cannot resolve overloaded function 'operator new' based on conversion to type 'double*'
error: expected ';' before 'sizeof'

因为我是C ++的新手所以我不知道更多关于它的细节,

请告诉我如何在我的代码中使用new代替malloc

谢谢和问候

1 个答案:

答案 0 :(得分:1)

相当于

SP->xs = malloc(size * sizeof(double));

SP->xs = new double[size];

这不需要任何#include s。

要释放已分配的数组,请使用delete[]

delete[] SP->xs;

方括号很重要:没有它们,代码将编译但会有undefined behaviour

由于您正在使用C ++编写,因此请考虑使用std::vector<double>而不是手动管理内存分配。