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

时间:2014-02-12 05:36:22

标签: c++

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

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

XYZ** a;
allocate_mem(a);

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

3 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:2)

你想要的是什么:

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

XYZ* a;
allocate_mem(&a);

答案 2 :(得分:0)

您可能希望使用vector尝试完全避免手工制作的内存分配:

typedef std::vector<double> row;
std::vector<row> a(10);

a[1].push(0.5);
...