我的代码如下所示
SP->xs = malloc(size * sizeof(double));
其中xs
是结构变量,size
是int
类型,
所以我在这里如何使用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
谢谢和问候
答案 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>
而不是手动管理内存分配。