|
|
Next
Previous
- Visual C++ 6.0 Runtime Heap Debugging
This only checks for heap corruption (i.e. destructive side-effects
of writing outside the allocations) and even then, it only catches
writings in the
NO_MANS_LAND_SIZE (default:4 bytes) on either side of the blocks.
The detection of these errors is done whenever the system
calls _CrtCheckMemory() . HeapCheck catches read accesses as well,
at the EXACT place they are made, and in a much larger
block (a page in i386 systems is 4096 bytes).
- BoundsChecker
This is a very good debugging tool, capable of catching almost
every bug. However, CPU cycles are used in order to perform
all these checks, and especially in
instrumentation mode and maximum memory checking,
the program runs really slow (some programs, like protocol stacks,
won't run correctly if they run too slowly). HeapCheck can only
catch heap-related
errors, but it uses the paging hardware to do the checking.
The net result is that HeapCheck debug versions of programs
run at almost the SAME speed as normal debug versions (you
only get slower allocating and de-allocating functions,
nothing more).
In other words you can leave it in your project and forget
about it (it will be automatically removed when you compile a
Release version).
Next
Previous
|