Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.141.100.120] |
|
Сообщ.
#1
,
|
|
|
Здравствуйте!
В компиляторе c++ 2017, как и в предыдущих, есть rtc. Она включается флагом /RTCcsu. В исполняемый код, автоматически втыкаются дополнительные проверки некоторых ошибок. Во-первых, хочется проверить, как работают все эти проверки. То есть нужен код, который справоцирует эту ошибку. Например, написал функцию , который использует неинициализированную переменную. #pragma warning( push ) #pragma warning( disable : 4701 ) #pragma warning( disable : 6001 ) void condition_use_variable( const bool expression ) { int x; if( expression ) { x = 123; } int y = x; _tprintf( _T( "variable value %d\r\n" ), y ); } #pragma warning( pop ) Прагмы нужны, чтоб скомпилировать код. А то этот "дурной" компилятор, даже ногу не даёт отстрелить. Вообще, данный вопрос интересен, не только ради самой проверки. Во-вторых, что-то ms опять накрутили в стандартной библиотеке и теперь она просит отключить /RTCc. Я бы хотел удостоверится, что оно действительно отключается только для библиотеки и не затрагивает мой код. В-третьих, можно установить свой обработчик ошибок и сопоставить типы с номером ошибки. Из документации я понял не всё и хотел бы проверить как оно работает. Но пока такой вопрос или даже просьба. Подскажите, как можно ещё заставить сработать run-time checker? Перебором вытащил вшитое описание ошибок. Цитата 0. Stack pointer corruption 1. Cast to smaller type causing loss of data 2. Stack memory corruption 3. Local variable used before initialization 4. Stack around _alloca corrupted Но подозреваю, что это не всё. |