C++删除二维指针向量
C++ deleting 2 dimensional pointer vector
我在C++中遇到了瓦尔格林德内存泄漏。我在 Main 函数中创建了一个类 Coordinate 的二维矢量指针,并用一些随机值填充它:
vector< vector<Coordinate*> > parent_vector_coords;
parent_vector_coords.push_back(calculateCannonCoordinates(bow_x, bow_y,
stern_x, stern_y, game, 2);
现在我需要删除指针。一种方法是这样的:
for(unsigned int i = 0; i < parent_vector_coords.size(); i++)
{
for(unsigned int index = 0; index < parent_vector_coords[i].size(); index++)
{
delete parent_vector_coords[i][index];
}
}
编辑计算大炮坐标:
vector<Coordinate*> calculateCannonCoordinates(int bow_x, int bow_y,
int stern_x, int stern_y, Game& game, int value)
{
vector<Coordinate*> coords;
if(bow_x == stern_x)
{
if(bow_y < stern_y)
{
for(int index = bow_y; index <= stern_y; index++)
{
coords.push_back(new Coordinate(index, bow_x));
game.getBoard()->getField()[index][bow_x].setValue(value);
}
}
else if(bow_y > stern_y)
{
for(int index = bow_y; index >= stern_y; index--)
{
coords.push_back(new Coordinate(index, bow_x));
game.getBoard()->getField()[index][bow_x].setValue(value);
}
}
}
else if(bow_y == stern_y)
{
if(bow_x < stern_x)
{
for(int index = bow_x; index <= stern_x; index++)
{
coords.push_back(new Coordinate(bow_y, index));
game.getBoard()->getField()[bow_y][index].setValue(value);
}
}
else if(bow_x > stern_x)
{
for(int index = bow_x; index >= stern_x; index--)
{
coords.push_back(new Coordinate(bow_y, index));
game.getBoard()->getField()[bow_y][index].setValue(value);
}
}
}
return coords;
}
但是我仍然得到由矢量引起的内存泄漏。有人知道删除指针的正确方法吗?
由于仍然有人在看这个问题,我决定给出答案。
坐标中似乎还有另一个指针对象,自动实例化(当时忘记了)。在释放坐标之前,我没有删除该指针。这就是导致瓦尔格林德内存泄漏错误的原因。
每个有类似问题的人都应该考虑评论部分给出的建议(智能指针等)
相关文章:
- 为什么指针在对二维数组进行排序时无法正常工作?
- 用于输出矩阵的二维指针
- 如何通过引用或指针访问二维矢量
- 如何使用二维语法访问指针
- 坚持将双指针管理的内存复制到二维数组
- 如何使用智能指针在二维上声明数组?
- 二维数组中的指针算术
- 为什么这个指针到指针的二维数组像这样分配新的 int
- 二维指针
- C++ ->尝试逐字阅读一行文本。如何使指针等效于用于存储输入的当前二维数组
- C++ 二维数组和指针引用
- 在 C++ 中访问二维指针数组中的值
- 指向二维数组的指针
- 如何初始化所有元素为 0 的指针的二维动态内存数组
- C++:二维指针数组排序:选择排序不适用于某些实例
- 运算符 [] 重载常量引用二维指针
- C++删除二维指针向量
- 如何删除这个二维指针数组?制作析构函数
- 创建一个二维指针数组
- 如何在二维指针数组中打印给定索引处的值