繁体   English   中英

使用tinyxml2的奇怪段错误

[英]Strange segfault with tinyxml2

我有一个我不了解的段错误。 它总是出现在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 ++标准库为您管理。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM