I got a memory corruption on the heap when running my 32bit app on Windows 2008 server, 64bit, when I check the heap block which was corrupted, I found that the metadata of the heap block was not corrupted, but the user accessible part was corrupted (at lease the first 4 bytes were corrupted according to my analysis).
You know, there are a lot of possibilities that can lead to heap corrupt, memory overrun/underrun, use wild pointer, mismatch heap handler, use uninitialized memory etc.
But since the metadata and the first 4 bytes of user accessible part are adjacent parts. I think the possibility of memory overrun/under run is very low. Because if it is a memory overrun or under run, then it is very likely that the metadata will also be corrupted.
I am not sure whether my understanding is correct or not? Anyone can give me a hint here?