我有一个我不了解的段错误。
它总是在i = 0和j在1000和1100之间发生。
这是追溯信息以及解决此问题所需的所有来源:https://gist.github.com/Quent42340/7592902
请帮我。
编辑:哦,我忘了。在我的要点上,map.cpp:72被评论。我的源代码中也对此进行了注释。我这样做是为了查看问题的根源,但是即使没有那条线,问题仍然存在。
最佳答案
我看到您在这里分配了一个指针数组:
m_data = new u16*[m_layers];
但是,我从未见过您将第二维分配给该数组。似乎您应该分配地图的行,要么作为您自己划分为大块的一大块内存,要么每行
new
。例如,如果将一行添加到
for (i ...)
循环中:for(u8 i = 0 ; i < m_layers ; i++) {
m_data[i] = new u16[m_width * m_height];
如果您走那条路线,则还需要升级析构函数:
Map::~Map() {
// WARNING: This doesn't handle the case where the map failed to load...
// Exercise for the reader.
for (u8 i = 0; i < m_layers; i++) {
delete[] m_data[i];
}
delete[] m_data;
}
另一种方法是使用
std::array
并让C ++标准库为您管理。关于c++ - 使用tinyxml2的奇怪段错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20135162/