与tinyxml2奇怪的段错误

时间:2013-11-22 01:15:11

标签: c++ segmentation-fault tinyxml

我有一个我不明白的段错误。 它总是发生在i = 0和j在1000和1100之间。 以下是回溯以及查看问题所需的所有来源:https://gist.github.com/Quent42340/7592902

请帮帮我。

编辑:哦,我忘了。在我的要点map.cpp:72被评论。它在我的源代码中也有评论。我这样做是为了看问题来自哪里,但即使没有那条线,问题仍然存在。

1 个答案:

答案 0 :(得分:1)

我看到你在这里分配一个指针数组:

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 ++标准库为您管理。