Przy użyciu kompilacja do debugowania do wyboru Zastąp pamięci
Aby użyć kompilacja do debugowania, aby sprawdzić, czy pamięć Zastąp, należy najpierw ponownie skompiluj projekt programu debug.Następnie przejdź do początku aplikacji InitInstance funkcję i Dodaj następujący wiersz:
afxMemDF |= checkAlwaysMemDF;
Program przydzielania pamięci program debug umieszcza bajtów guard wokół wszystkie alokacje pamięci.Jednakże zabezpieczenia tych bajtów nie dobry, chyba że można sprawdzić, czy zostały zmienione (co oznaczałoby Zastąp pamięci).W przeciwnym razie zapewnia to po prostu buforu, który może w rzeczywistości pozwoli uzyskać away z Zastąp pamięci.
Przez włączenie checkAlwaysMemDF, wymusi MFC do wywoływania AfxCheckMemory wywołania funkcji czas co do nowych lub usunąć jest dokonywane.Zastąp pamięci został wykryty, generuje komunikat śledzenia, która wygląda podobnie do następującego:
Damage Occurred! Block=0x5533
Jeśli widoczny jest jeden z tych komunikatów, należy wykonywania kodu, aby ustalić, w którym szkoda wystąpiła.Aby wyizolować bardziej precyzyjnie, gdzie wystąpił Zastąp pamięci, mogą wykonywać jawnego wywołania do AfxCheckMemory samodzielnie.Na przykład:
ASSERT(AfxCheckMemory());
DoABunchOfStuff();
ASSERT(AfxCheckMemory());
Jeśli powiedzie się ASSERT pierwszy i drugi z nich nie powiedzie się, oznacza to, że Zastąp pamięci musi wystąpiły w funkcji między dwie rozmowy.
W zależności od charakteru aplikacji może stwierdzą, że afxMemDF powoduje uruchomienia zbyt wolno, aby przetestować nawet programu.afxMemDF Powoduje, że zmienna AfxCheckMemory można wywołać dla każdego wywołania do nowych i usuwania.W takim przypadku należy punktowy rozmów na AfxCheckMemory(), jak wykazano powyżej, a następnie spróbuj wyizolować pamięci zastąpić w ten sposób.