Между тем, шестнадцатеричные коды, как минимум, в Debug-версии приложения, собранном MSVC, уже могут кое о чем рассказать...
Например, после чтения документации совершенно очевидно, что:
- программа попыталась использовать память, которая была освобождена через malloc или delete
- выполняется Debug-версия программы (в Release-версии memory poisoning по соображениям производительности не выполняется)
Вот некоторые "магические числа", которые встречаются мне наиболее часто:
| Число | Пояснение |
| 0xABABABAB | Used by Microsoft's HeapAlloc() to mark "no man's land" guard bytes after allocated heap memory |
| 0xBAADF00D | Used by Microsoft's LocalAlloc(LMEM_FIXED) to mark uninitialised allocated heap memory |
| 0xCCCCCCCC | Used by Microsoft's C++ debugging runtime library to mark uninitialised stack memory |
| 0xCDCDCDCD | Used by Microsoft's C++ debugging runtime library to mark uninitialised heap memory |
| 0xFDFDFDFD | Used by Microsoft's C++ debugging heap to mark "no man's land" guard bytes before and after allocated heap memory |
| 0xFEEEFEEE | Used by Microsoft's HeapFree() to mark freed heap memory |
Дополнительную информацию можно почерпнуть в MSDN, или, например,
здесь.
Комментариев нет:
Отправить комментарий