Wycieki pamieci i ich wykrywanie pod Builder C++
Narzedziem, ktore pozwala na wykrywanie i rozwiazywanie problemow zwiazanych z wyciekami pamieci (alokacja blokow pamieci z zastosowaniem slowa kluczowego new), wystepujacymi podczas programowania z zastosowaniem srodowiska IDE Borland Builder C++ 5.0 i 6.0, jest tzw CodeGuard.
CodeGuard oryginalnie napisany zostal dla aplikacji 16 bitowych i dopiero wersja 5.0 Buildera C++ zostala wyposazona w pelni funkcjonalna wersje CodeGuard 32 bit. Zadaniem CodeGuard jest dynamiczne sledzenie zasobow pamieci, jej przydzielania nowym obiektom, alokowania i zwalniania za pomoca slow kluczowych delete oraz delete [].
CodeGuard wlaczamy w opcjach danego projektu. Sciezka dostepu jest nastepujaca:
Project->Options->CodeGuard(zakladka)->CodeGuardValidation

Po wlaczeniu CodeGuard mozna przetestowac jego dzialanie na tym prostym przykladzie.
Tworzymy standardowa aplikacje i dodajemy guzik na glownym formularzu, nastepnie wpisujemy prosta metode obslugi guzika, gdzie tworzymy celowy wyciek pamieci.
void __fastcall TForm1::Button1Click(TObject *Sender)
{
unsigned int * iVar0 = new unsigned int [100];
}
Projekt kompilujemy, klikamy kilka razy guzik i program zamykamy. Po zamknieciu programu, wyswietlone zostaje okno CodeGuard ze wskazaniem wycieku pamieci. Lista danych zawiera miedzy innymi opis bledu oraz rozmiar wycieku i potencjalne zrodlo wycieku z jego dokladnym umjescowieniem w kodzie programu np:
The Object array (0x00E4750) [size:400bytes] was created with new ()

TForm1:Button1Click(const System::TObject*)

Dwukrotne klikniecie na druga linijke przenosi nas do linii kodu odpowiedzialnej na wyciek pamieci.
UWAGA!!! CodeGuard uruchomiony w tle spowalnia wykonanie programu. Nalezy sie z tym liczyc przy wykonywaniu wiekszych programow wykonujacych duza liczbe obliczen.


Autorem tekstu jest: Marek Hajduczenia
Materiał dodany przez użytkownika: marek_haj