Ciekawe kody numeryczne

Kilkanaście minut temu skończyłem pisanie nowego Settings Manager'a. Ale to temat na inny post ;). W tym wpisie chciałbym wspomnieć o ciekawych wartościach przypisywanych pamięci w systemie Windows w aplikacjach kompilowanych na VC++ w trybie Debug: Najważniejszy z omawianych kodów, a zarazem posiadający praktyczne znaczenie to 0xCDCDCDCD. Jeśli jeszcze nie miałeś styczności z tym kodem a programujesz pod Windows to go zapamiętaj. Stary Dobry VC++6.0 przypisywał mu termin "Expression cannot be evaluated" (wyrażenie nie może zostać obliczone). Ten kod jest bardzo charakterystyczny dla niezainicjowanych zmiennych (przypominam, mowa o trybie Debug; w trybie Release kompilator nie bawi się w takie ustawianie) dlatego jeśli w toku pracy programu wyłapiesz taki kod debuggerem to najprawdopodobniej znaczy, że gdzieś w kodzie do obliczeń został użyty niezainicjowany fragment pamięci. Inne, bardziej wesołe kody, które udało mi się odnaleźć to:
  • 0xBAADFOOD - funkcja HeapAlloc() w taki sposób inicjuje alokowaną pamięć
  • 0xFEEEFEEE - funkcja HeapFree() w taki sposób czyści zwolnioną pamięć
  • 0xFDFDFDFD - w ten sposób malloc() oznacza cztery bajty przed i cztery bajty po przydzielonym bloku pamięci (służą jako 'strażnicy')
  • 0xDDDDDDDD - funkcja free() tak oznacza zwolnioną pamięć
Przypominam, że powyższe kody obowiązują w systemie Windows przy kompilowaniu VC++ w trybie Debug ;). A skoro już przy kodach jestem, to warto też przypomnieć 0xC0000005 - Access Violation :).