我的论点已经腐败了?

时间:2012-04-12 19:23:01

标签: c++ corruption

哇,我真的完全不知道这里到底发生了什么。这真让我难以置信。我有这个方法,我正在努力工作(Stuff似乎随机破坏而没有变化),我注释掉了部件,所以我可以让它在最低限度下工作。

Font* ResourceLoader::getFont(const std::string &name, int size) {
size = size;
//for(std::list<std::string>::iterator itr = mPaths.begin(); itr != mPaths.end(); itr++) {
    //if(fileExists((*itr)+name)) {
        std::string filename(name);
        TTF_Font *font = TTF_OpenFont(filename.c_str(), size);
        TTF_SetFontHinting(font, TTF_HINTING_MONO);
        std::string err = std::string(TTF_GetError());

        Font* result = new Font(font);

        return result;
    //}
//}

return NULL;
}

我的问题是“size”参数通过该方法被破坏了。这是它的样子

enter image description here

1 个答案:

答案 0 :(得分:1)

关闭编译器优化并查看是否仍在进行此操作。

我的猜测是size参数存储被编译器优化掉了,因为它没有在函数中使用,因此调试器会显示垃圾数据。

您可以尝试查看是否正在发生的事情是在每行后打印出函数中的size参数

std::cout << "size at line " << __LINE__ << ": " << size << std::endl;

我敢打赌size的价值会停止变化。

PS。我刚刚注意到你在其中一个函数调用中使用了size。无论如何,尝试打印出它的价值。另外,为什么在函数顶部有size = size;语句?你想用它做什么?

PPS。要解决您的访问冲突问题,请务必在尝试在下游使用它之前检查font的值。