Insure++ automatically detects errors that might otherwise go unnoticed in normal testing. Subtle memory corruption errors and dynamic memory problems often don’t crash the program or cause it to give incorrect answers until the program is delivered to customers and they run it on their systems – then the problems start.
Even if Insure++ doesn’t find any problems in your programs, running it gives you the confidence that your program doesn’t contain any errors. Of course, Insure++ can’t possibly check everything that your program does. However, its checking is extensive and covers every class of programming error, including:
- Memory corruption due to reading or writing beyond the valid areas of global, local, shared and dynamically allocated objects.
- Operations on uninitialized, NULL, or “wild” pointers.
- Memory leaks.
- Errors allocating and freeing dynamic memory.
- String manipulation errors.
- Operations on pointers to unrelated data blocks.
- Invalid pointer operations.
- Incompatible variable declarations.
- Mismatched variable types in printf and scanf argument lists.