创建一个向量不同的双指针到字符c ++

时间:2014-05-07 20:10:05

标签: c++

每次我在向量上添加一个新的'temp'板时,它会将所有先前的板更改为我刚刚添加的板,所以最后我有一个相同的临时变量向量...为什么会这样?

在调用ChangeBoard()之后,会更新board(board被声明为char **,而不是'new')。

char** temp;
for(int i =0; i < 3; i++){

  ChangeBoard(); //makes changes to board

  temp = board; //sets temp to the latest version of the board

  vector.push_back(temp); //add temp to vector 
}

我如何制作它,以便每个'临时'板在矢量中有所不同?

我是否需要将temp声明为'new',然后在每次将其添加到矢量后将其删除..如果是这样的话?

感谢您对此提供任何帮助!!

1 个答案:

答案 0 :(得分:0)

我认为你把复制指针与复制内存混淆了。

看起来你正在一遍又一遍地更新board指向的相同内存,假设temp作业和/或vector.push_back(temp)会复制全部记忆。它没有,它只是向向量添加另一个指向同一内存的指针。

如果每次调用board时都没有分配ChangeBoard(),那么它不是新的电路板,而是使用新信息更新的内存。

如果您想在向量中的每个位置指向不同的板,则需要分配board每次调用ChangeBoard()时指向的新内存。 (这可能会使temp不必要。)