tinyxml2的奇怪片段
Strange segfault with tinyxml2
我有一个不明白的segfault。它总是发生在i=0并且j在1000和1100之间。以下是查看问题所需的回溯和所有来源:https://gist.github.com/Quent42340/7592902
请帮帮我。
编辑:哦,我忘了。在我的要点图上,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++标准库为您管理它。
相关文章:
- 如何使用tinyxml2从XML加载父实体和子实体
- 这个带有模板<类 Vector 的C++代码片段有什么问题>
- Opengl 3.1 GLSL 140 在 C++ 年输出白色在片段着色器中
- 这两个代码片段相似,但显示的结果不同
- 如何替换此示例代码片段中已弃用的handler_type_t或 boost::asio::handler_type?
- 为什么TinyXML2的XMLDocument::FirstChild()函数在尝试解析这个有效的XML文件时返回NULL?
- 我需要解释给定片段的输出
- 如果我在下面的代码片段中添加"delete[] d;",为什么我得到零?
- 我遇到了这个代码片段,不明白. 它递归检查 C++ 字符串中是否存在大写字符
- 任何人都可以解释一下我是否需要 & 在第一个代码片段中
- OpenGL 片段着色器未在英特尔 HD 4000 显卡上编译
- 如何让用户在 tinyxml2 中输入 XML 文件的路径
- 使用 TinyXML2 读取 C++ 中的 XML 文件
- 帧缓冲纹理变为白色(片段着色器不会影响它)
- 如何在 c++ 中检查连续片段中数字被 11 整除
- 提取狮身人面像文档中的C++代码片段
- 为什么此代码片段有效?如何取消引用空点?
- 将顶点位置从顶点传递到片段着色器 - 仅在使用 Nsight 进行调试时有效
- 无法在这个基本的Qt代码片段中找到错误,但我被告知它肯定存在?
- tinyxml2的奇怪片段