The Error Report tab allows you to check for a few special conditions that can stop the target program using a warning dialog or breakpoint
Read on, or click on a setting in the picture below to find out more
When allocating CRT memory Memory Validator looks for two conditions that may indicate a programming error, or programming oversight.
•Report allocations of zero size enable the detection of zero size allocations showing the warning dialog in the breakpoints topic
Zero byte allocations are valid, but not normally something that is done. Bugs come about for example because memory blocks of zero length are allocated and then used, or perhaps not deallocated because the logic looks for a byte count rather than a non NULL pointer.
An example report in the Memory tab:
•Report unused memory enable the detection of memory which is allocated, but later deallocated without actually having been used
This sometimes happens due to the logic of the function in which it occurs. Or maybe the memory was once required but the source code has changed and the person that changed the code has forgotten to remove the allocation and deallocation code.
An example of what you might see in the Memory tab:
Improving application performance: for each of the above cases, if this either of these conditions is detected it may be possible to modify the code to remove the allocation and deallocation and thus improve program performance by reducing the use of the heap manager and reducing memory consumption.
•Report partially unused memory enable the detection of memory allocated, but which is then later deallocated without all of it having been used
•Report mismatched malloc / free / new / delete enables detection of an inappropriate deallocation method compared to that used for allocation
Allocated memory must be freed with the correctly paired deallocator:
•new delete •new [ ] delete [ ] •malloc free |
On detection of mixed use, a report will appear in the Memory tab as below:
In addition to the above conditions, the following conditions are also checked for:
•Zero size allocation
•Negative size allocation
•Bad reallocation
•Bad deallocation
•Bad pointer to C heap
•Bad start of C heap
•Bad node in C heap
•Damage in C++ heap
•Damage in Release CRT heap
•Report multiple initialisation of Critical Sections checks if CRITICAL_SECTION objects are initialized more than once
This error typically does not cause a problem in any program execution, but you may wish to find and remove the cause of these errors.
You may also find that some third party DLLs cause these errors. DLLs by nVidia often seem to generate these errors.
•Report when abort is called sets a signal handler will be called when raise(SIGABRT) is called, and if found reports a callstack showing where this happens
•Report when a pure virtual function is called sets a purecall handler that will be called if a pure virtual call is made, and if found reports a callstack showing where this happens
Reset All - Resets all global settings, not just those on the current page.
Reset - Resets the settings on the current page.