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関数呼び出しの 1 つで使用していることに気付きました。とにかくその値を出力してみてください。また、なぜsize = size;関数の先頭にステートメントがあるのですか? それで何を達成しようとしていますか?

PPS。fontアクセス違反に対処するには、ダウンストリームで使用する前にの値を確認してください。

于 2012-04-12T19:28:50.887 に答える