Ошибка Onexit.c в визуальной студии?

Когда я пытаюсь запустить мою программу в режиме релиза,

Необработанное исключение в 0x6f2426ef (msvcr100.dll) в FPS Game.exe:
0xC0000005: Место записи нарушения прав доступа 0x12817c19.

это в статической функции _onexit_t __cdecl _dllonexit_nolock в
onxit.c в строке 325: * ((* pend) ++) = (_PVFV) func;

и я не знаю, почему я пробовал много вещей, которые я не могу заставить его работать. У меня есть sdl, связанный с моим приложением, если это причина, но мне действительно нужна помощь с этим.

Это код, который идет не так, как надо:

static _onexit_t __cdecl _dllonexit_nolock (
_onexit_t func,
_PVFV ** pbegin,
_PVFV ** pend
)
{
_PVFV   *p=NULL;
size_t oldsize;

/*
* First, make sure the table has room for a new entry
*/
if ( (oldsize = _msize_crt(*pbegin)) <= (size_t)((char *)(*pend) -
(char *)(*pbegin)) )
{
/*
* not enough room, try to grow the table
*/
size_t grow=__min(oldsize, MAXINCR * sizeof(_PVFV));
if((_HEAP_MAXREQ-grow<oldsize) ||
((p = (_PVFV *)_realloc_crt((*pbegin), oldsize + grow)) == NULL))
{
/*
* failed, try to grow by ONEXITTBLINCR
*/
grow=MININCR * sizeof(_PVFV);
if ( (_HEAP_MAXREQ-grow<oldsize) ||
((p = (_PVFV *)_realloc_crt((*pbegin), oldsize + grow)) == NULL ))
{
/*
* failed again. don't do anything rash, just fail
*/
return NULL;
}
}

/*
* update (*pend) and (*pbegin)
*/
(*pend) = p + ((*pend) - (*pbegin));
(*pbegin) = p;
}

/*
* Put the new entry into the table and update the end-of-table
* pointer.
*/
*((*pend)++) = (_PVFV)func;

return func;

}

2

Решение

Основываясь на многолетнем опыте и многих подобных опытах, одно из моих практических правил гласит: «Нет, вы просто не нашли ошибку в компиляторе».

Сначала соберите релиз с отладочной информацией — это должно, по крайней мере, позволить вам увидеть стек и, возможно, дать вам понять, что происходит не так.

Часто такая проблема вызвана

  • используя неправильные настройки компоновщика или библиотеки (это уникально для MSVC
    / окна)
  • связывание с библиотекой релизов, которая не создана с
    одинаковые варианты генерации кода;
  • неправильная инициализация переменных (что часто не отображается в режиме отладки)
  • Отсутствие согласованных параметров компиляции во всех проектах
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]