| title | Use Native Run-Time Checks | ||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| description | Use native run-time checks in Visual Studio to catch common run-time errors, such as stack pointer corruption, overruns of local arrays, and stack corruption. | ||||||||||||||||||||
| ms.date | 10/24/2023 | ||||||||||||||||||||
| ms.topic | how-to | ||||||||||||||||||||
| f1_keywords |
|
||||||||||||||||||||
| dev_langs |
|
||||||||||||||||||||
| helpviewer_keywords |
|
||||||||||||||||||||
| author | mikejo5000 | ||||||||||||||||||||
| ms.author | mikejo | ||||||||||||||||||||
| ms.subservice | debug-diagnostics |
In a Visual Studio C++ project, you can use native runtime_checks to catch common run-time errors such as:
-
Stack pointer corruption.
-
Overruns of local arrays.
-
Stack corruption.
-
Dependencies on uninitialized local variables.
-
Loss of data on an assignment to a shorter variable.
If you use /RTC with an optimized (/O) build, a compiler error results. If you use a
runtime_checkspragma in an optimized build, the pragma has no effect.When you debug a program that has run-time checks enabled, the default action is for the program to stop and break to the debugger when a run-time error occurs. You can change this default behavior for any run-time check. For more information, see Managing Exceptions with the Debugger.
The following procedures describe how to enable native run-time checks in a debug build, and how to modify native run-time check behavior.
Other topics in this section provide information about:
-
Use the /RTC option and link with the debug version of a C run-time library (/MDd, for example).
To set the option in Visual Studio, see the Remarks section of the /RTC (Run-time error checks) reference article. Set the value in the Basic Runtime Checks property and not the Smaller Type Check property. The Smaller Type Check property is not recommended.
- Use the
runtime_checkspragma.