c++ - 为什么我不能在用新对象替换对象之前删除它?
问题描述
我有一个 2D 类型的对象指针数组Organism
,它是这样声明Organism*** organisms;
的,我有一个函数可以用另一个对象替换这个数组中的一个对象。这就是我尝试编写此函数的方式:
void World::SetOrganism(Organism * org, const Position & pos) {
if (pos.x < width && pos.x >= 0 && pos.y < height && pos.y >= 0) {
delete organisms[pos.x][pos.y];
organisms[pos.x][pos.y] = org;
}
}
这就是我调用函数的方式:
world.SetOrganism(new EmptyTile(this->position, world), this->position);
EmptyTile
继承自Organism
。
问题是我总是Exception thrown: read access violation. this->organisms was 0x79E5D62E.
在delete
. 我还在学习 C++,我不应该删除这个对象以避免内存泄漏吗?
编辑:这就是我分配的方式organisms
:
World::World(const int& height, const int& width) {
this->width = width;
this->height = height;
organisms = new Organism * *[width];
for (int i = 0; i < width; i++) {
organisms[i] = new Organism * [height];
for (int j = 0; j < height; j++) {
Position* pos = new Position(i, j);
organisms[i][j] = new EmptyTile(*pos, *this);
delete pos;
}
}
}
解决方案
推荐阅读
- c++ - 这个简单的 Mutex 没有任何作用
- c - 为什么 GNU 科学库不允许列多于行的矩阵进行奇异值分解?
- r - 计算df中时间间隔的观察总和
- javascript - 如何根据应用脚本中的范围值设置条件
- winforms - 如何获取图片框内图像的鼠标点击坐标(不是图片框鼠标点击坐标而是图像像素坐标)
- javascript - vuedraggable 背景使 div 不可拖动
- python - 如何使用 pandas/numpy/python 数学库计算平均绝对误差 (MAE) 和平均有符号误差 (MSE)?
- node.js - 防止 API 调用中的潜在竞争条件?
- sql - 如何在 SQL Server 中为 order by 子句跳过 n 行
- visual-studio - 无法将 MASM 函数导入 C