每次我在向量上添加一个新的'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',然后在每次将其添加到矢量后将其删除..如果是这样的话?
感谢您对此提供任何帮助!!
答案 0 :(得分:0)
我认为你把复制指针与复制内存混淆了。
看起来你正在一遍又一遍地更新board
指向的相同内存,假设temp
作业和/或vector.push_back(temp)
会复制全部记忆。它没有,它只是向向量添加另一个指向同一内存的指针。
如果每次调用board
时都没有分配ChangeBoard()
,那么它不是新的电路板,而是使用新信息更新的内存。
如果您想在向量中的每个位置指向不同的板,则需要分配board
每次调用ChangeBoard()
时指向的新内存。 (这可能会使temp
不必要。)