I am debugging an access violation exception dump (code xxxxxxxx access violation for memory address, exception code 0x00000005). It is 32-bit x86 code release version. I have used the command dd to examine the memory address (not code address) which reports access violaton. The content of the address is displayed as ???????? in debugger.
I double checked for the memory, it does not belong to any stack (using thread window to iterate all thread stack address space) memory address space, does not belong to any binary code (using load model window to verify).
My question is, for memory address which reports access violation and which content is ????????,
1. is it the memory address not allocated (or reserved) in current process virtual memory space?
2. or the memory address deleted? I have made some test that for the memory deleted on heap, its content will be marked with 0xfe, not ?. But I am not sure whether when the heap memory is recycled by OS memory mamagement system, it will be remarked as ????????
3. Or something else possible?
It means you aren't allowed to touch memory at that address.
You're probably overcomplicating this. The problem most likely isn't anything deep in the memory system.....you just corrupted the pointer somehow, probably by overrunning the bounds of an array or something similar.
Here is what I got from Windbg, do know what means "PAGE_NOACCESS"? I did MSDN search but no results.
You are using an invalid pointer, meaning that your program has a bug in handling pointers. You don't need to search MSDN for that. What you need to do is debug your program.
Also, this error has happened to almost every programmer that has written anything non-trivial that handles pointers. It isn't something that can be solved by searching MSDN. It is a bug in your code, plain and simple.