0

哇,我真的完全不知道这里到底发生了什么。这真的让我大吃一惊。我有这种方法,我正在尝试开始工作(这里的东西似乎随机中断而没有改变),我注释掉了部分,所以我可以让它至少工作。

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;
}

我的问题是“大小”参数正在通过该方法损坏。这是它的样子

在此处输入图像描述

4

1 回答 1

1

关闭编译器优化,看看这是否仍然发生。

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

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

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

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

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

聚苯乙烯。为了解决您的访问冲突——确保font在尝试在下游使用它之前检查它的值。

于 2012-04-12T19:28:50.887 回答