dbgrptt.c dbghook.c Ошибка итератора? - PullRequest
0 голосов
/ 31 августа 2010

Хорошо, так долго, проведя выходные с Macbook, я начал делать загрузчик ресурсов для двухмерных игровых платформ, он отлично работает в xcode, но когда я вернулся домой и попытался загрузить его в Windows, я получил ошибку отладки.

По сути, происходит то, что первый вызов итератора работает? вторая - нет, но только со второй попытки вызова второй вызовет ошибку (это в игровом цикле). Я поменял местами звонки, но получился тот же результат.

Программа (в отладке) выходит и выдает мне сообщение

AssetLoadingWin.exe вызвал контрольная точка

затем указывает на следующий код в dbgrptt.c

#undef _CrtDbgBreak

/* These methods don't need a separate
   wchar version. Hence they need to be compiled only once from
   the original file */

_CRTIMP void _cdecl _CrtDbgBreak(
    void
    )
{
    DebugBreak(); // <-- breakpoint here
}

если я продолжу, я получу следующее сообщение

Microsoft Visual Studio C Runtime Библиотека обнаружила фатальную ошибку в AssetLoadingWin.exe.

Нажмите Break, чтобы отладить программу или Продолжайте завершать программу.

, который в свою очередь указывает на код в dbghook.c

__declspec(noinline)
void __cdecl _CRT_DEBUGGER_HOOK(int _Reserved)
{
    /* assign 0 to _debugger_hook_dummy so that the function is not folded in retail */
    (_Reserved);
    _debugger_hook_dummy = 0;
}

После множества точек останова его сузили до итератора, вызывающего метод.

// line 347 in the pastie.
void libImageDraw(GraphicIt &gfxIt, GraphicOptions &opts) {
    gfxIt->second->draw(opts.x, opts.y, opts.z); line
}

Спасибо за любые указатели.

Полный исходный код

window.cpp

asset_manager.hpp

1 Ответ

0 голосов
/ 31 августа 2010

Похоже, вы не проверяете результат вызова find в строке 239 в функции drawGraphic.

Также я думаю, что петля loadAll выглядит хитрой. Вы перебираете m_assetsToLoad и одновременно модифицируете его в loadResource.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...