指针似乎迷失在递归算法中
Pointer seems to be getting lost in recursive algorythm
我正在尝试进行递归洪水填充算法,并且正在参数中传递指向某些数据结构的指针。在算法运行的某个时刻,指针似乎丢失了。我不知道为什么。
代码说明:首先 Algorythm 检查块溢出,这意味着需要保存旧块并加载新块,基于 X 和 Y。接下来是替换块结构中的一些数据,然后是递归函数调用。
bool WorldGenerator::floodFillStep(int _x, int _y, int _target, int _replacement, Chunk* _chunk)
{
Chunk* chunk = _chunk;
if (_x < (xSize * CHUNK_WIDTH) && _y < (ySize * CHUNK_HEIGHT))
{
int x = _x % CHUNK_WIDTH,
y = _y % CHUNK_HEIGHT,
X = _x / CHUNK_WIDTH,
Y = _y / CHUNK_HEIGHT;
//check for chunk spill
if ((floodLastX / CHUNK_WIDTH) < X)
{
chunk->save();
std::string path = "maps/" + std::to_string(X) + std::to_string(Y) + ".map";
chunk->load(path, X, Y);
}
else if ((floodLastY / CHUNK_HEIGHT) < Y)
{
chunk->save();
std::string path = "maps/" + std::to_string(X) + std::to_string(Y) + ".map";
chunk->load(path, X, Y);
}
else if ((floodLastX / CHUNK_WIDTH) > X)
{
chunk->save();
std::string path = "maps/" + std::to_string(X) + std::to_string(Y) + ".map";
chunk->load(path, X, Y);
}
else if ((floodLastY / CHUNK_HEIGHT) > Y)
{
chunk->save();
std::string path = "maps/" + std::to_string(X) + std::to_string(Y) + ".map";
chunk->load(path, X, Y);
}
floodLastX = _x;
floodLastY = _y;
//replacement
if (chunk->getTile(x, y)->getType() == _target)
{
if (x < 40 && y < 40 && x >= 0 && y >= 0)
{
chunk->getTile(x, y)->setType(_replacement);
chunk->getTile(x, y)->setMod(255);
//_chunk->save();
floodFillStep(_x + 1, _y, _target, _replacement, chunk);
floodFillStep(_x, _y + 1, _target, _replacement, chunk);
floodFillStep(_x - 1, _y, _target, _replacement, chunk);
floodFillStep(_x, _y - 1, _target, _replacement, chunk);
}
}
}
return true;
}
在某些时候,抛出与 Chunk 实例中的 std::vector 相关的异常,当我检查局部变量时,指向 Chunk 的指针无效。当指向块的指针可能会丢失时,有什么想法吗?
谢谢
我已经
弄清楚了,它是与堆栈相关的,几乎无法重现的问题,所以不需要更深入的解释。那个块*块=_chunk我只是在尝试一些东西,并没有删除所有过时的代码。
相关文章:
- 需要为 C++ 中的以下问题设计递归算法
- 这种用于查找连续子数组中最大和的递归算法有什么优势吗?
- 运行合并排序递归算法时EXC_BAD_ACCESS错误
- 如何改进搜索二项式系数的递归算法
- 如何转换多次调用自己的递归算法?
- 如何将字符串保存在最长的常见子序列递归算法中
- 编写递归算法以从链表中删除元素.编写递归算法以将元素添加到链表中
- 指针似乎迷失在递归算法中
- 如何从递归算法返回节点
- 从递归算法到迭代算法
- 可传递值影响递归算法的渐近时间复杂性
- 我的递归算法中的问题,用于查找所有最短、唯一的路径
- 带有两个递归调用的递归算法的时间复杂性
- 这种递归算法有什么问题?
- C++递归算法中抛出异常
- 将条件递归算法转换为迭代算法
- 递归算法中的分段错误
- printbinary递归算法
- 迭代等价于递归算法
- O(n^m) 复杂度的递归算法