Date: 2010mar24
OS: Windows
Platform: Visual C++
Keywords: malloc, free
Q. How can I fix a "Free Heap block <number> modified at <number> after it
was freed" error?
This is the full message:
HEAP[MyProgram.exe]: HEAP: Free Heap block 3682378 modified at 3682edc after it was freed
Windows has triggered a breakpoint in MyProgram.exe.
This may be due to a corruption of the heap, and indicates a bug in
MyProgram.exe or any of the DLLs it has loaded.
The output window may have more diagnostic information
A. The problem is that you get this break a little while after you have
illegally modified a free object... not right when you do it.
So the code you see in your stack trace is just the innocent bystander.
There are a number of ways to solve this problem. But one that worked
for me is to sprinkle this code:
_ASSERTE(_CrtCheckMemory());
through my program before the break point. This will cause a break
if your memory is bad. So you can see that everything was OK
after function something() but bad before function something_else().
And you can do a binary search to zero in on the problem spot.