Почему этот код выдает исключение и как его отладить? [закрыто]C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Почему этот код выдает исключение и как его отладить? [закрыто]

Сообщение Anonymous »

Итак, я начал со строки 3 и получил исключение (подробности ниже). Затем я создаю строку 1 и 2, чтобы разделить два вызова функций, и обе строки работают нормально. Но когда он доходит до строки 3, он все равно выдает исключение.
Это в VS2022 с SDK 10.0, набором инструментов v143 и языком C++ последней версии. Отладочная сборка с запуском отладчика.

Код: Выделить всё

OutputDebugString( "Setting x to y...\n" );
auto x = std::format( "Setting x to y level {}\n", ( int )level );
OutputDebugString( std::format( "Setting x to y level to {}\n", ( int )level ).c_str() );
Исключение составляет функция _CrtIsValidHeapPointer из debug_heap.cpp. Я понимаю, что это указывает на некоторую форму повреждения памяти или плохой указатель, и я также знаю, что вызов может вызывать исключение, но на самом деле виноват какой-то другой фрагмент кода. Сначала я подумал, что, возможно, библиотеке std::format не понравилось 16-битное беззнаковое значение (уровень), поэтому я привел его к int, но это не имело никакого значения.
Я хочу понять, почему это происходит и как я могу отладить его дальше. Я завернул его в try/catch (catch предназначен для std::Exception), но исключение не было перехвачено. Я думаю, это считается необработанным, и VS просто останавливается в этой точке файла debug_heap. В командном окне отображается сообщение «HEAP[TestProgram.exe]: для RtlValidateHeap (00650000, 18B9B0A0) указан неверный адрес».
Как устранить эту проблему?

Подробнее здесь: https://stackoverflow.com/questions/798 ... i-debug-it
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»