我有一个程序可以自己运行良好,我正在尝试学习使用调试器。当我使用调试器(在Code :: Blocks中)运行它时,我得到一个SIGSEGV通知。有谁知道这些症状会导致什么问题?
以下是代码:
font = new Picture("font.png");
glBindTexture(GL_TEXTURE_2D,font->texID);
int w,h;//because it requires ints
glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_WIDTH, &w);
glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_HEIGHT, &h);
fontTexW = w;
fontTexH = h;
glBindTexture(GL_TEXTURE_2D,NULL);
std::ifstream widths;
widths.open("fontWidths.txt");
std::string line;
std::string num;
for(int i = 0;i < 95;i++)
{
std::getline(widths,line);
int j = 0;
num = "";
while(line[j] != ',') //this is where the arrow stops
{
num.push_back(line[j]);
j++;
}
fontLocs.push_back(Point(atoi(num.c_str()),0));
num = "";
j++;//avoid comma
while(j < line.size())
{
num.push_back(line[j]);
j++;
}
fontWidths.push_back(atoi(num.c_str()));
}
感谢您的帮助。
编辑:我刚刚意识到这是我的程序第一次尝试从没有加载SOIL(OpenGL纹理加载)的东西中读取。它可能与文件加载有关吗?答案 0 :(得分:0)
据我所知,调试器可以优化你的std :: string,这样size()就不会像以前那样使用它了。尝试省略size()函数并再次检查