为作为双指针传递的参数分配内存

allocating memory for parameters passed as double pointer

本文关键字:参数 分配 内存 指针      更新时间:2023-10-16

我正在将一个双指针变量传递给为该变量分配内存的函数。指针在函数内部有效,但在函数外部无效。这是我的代码片段

allocate_mem(XYZ** paVar){
   paVar = new XYZ*[10];
}
XYZ** a;
allocate_mem(a);

不确定我在这里犯了什么错误。如果有人能指出这个错误,我将不胜感激。

如果要

将其传递到外部,则需要将引用传递给变量。
这样就可以更改变量的内容:

allocate_mem(XYZ**& paVar){
   paVar = new XYZ*[10];
}

你想要的可能是:

void allocate_mem(XYZ** paVar){
   *paVar = new XYZ[10];
}
XYZ* a;
allocate_mem(&a);

您可能希望尝试通过使用vector来避免手动制作的内存分配:

typedef std::vector<double> row;
std::vector<row> a(10);
a[1].push(0.5);
...