PDA

Tam Sürümünü Görmek İçin : memory leaks nedir?


Flagrant
09/03/2007, 13:53
merhaba, bu memory leaks olayi nedir acaba?

bunu gormemiz icin programin basina asagidaki gibi bir kod eklememiz gerekiyormus. Nedir ne ise yarar asagidaki kodu yorumlayabilecek olan var mi? tesekkurler.

#inlcude "stdafx.h"
...
...

int main()
{

//**Enable memory leak dumping at the end of the program
//** required include files are included in the given stdafx files

_CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );

//uncomment this next line if you want to see memory leaks reported
//#define WANT_TO_SEE_MEMORY_LEAKS
#ifdef WANT_TO_SEE_MEMORY_LEAKS
int * ptr = new int[5]; //lets get 5 int-block from the heap and not return
*ptr = 5;
ptr++; //first cell of the block has value 5
*ptr = 6; //second cell has value 6
ptr++;
*ptr++=7;
*ptr++=8;
*ptr++=9; //last cell has value 9
#endif

...
...
}


necipakif
09/03/2007, 16:11
Bildiğim kadarıyla memory leaks yaptığımız programlardaki fazladan hafıza kullanımı ifade ediyor. Örnek vermek gerekirse; oluşturduğumuz nesneleri sırasıyla çağırdığımızı düşünelim. Şayet bu nesneleri hafızadan silmezsek, boş yere hafıza kaybı oluyor. Küçük programlar da bu kendini belli etmez ama kapsamlı projelerde önemli bir husustur. OOP'nin amaçlarından biri de budur.

Tabii şunu da belirtmek gerekir ki, bunu sadece nesne olarak düşünme. Hafızadan her ayrılan parça için (yani memory allocation / deallocation durumu) bu durumu düşünebiliriz.

Yukarıdaki koddaki pointer örneği de anlattıklarımla örtüşüyor zaten... Daha kapsamlı bilgi için;
http://www.codersource.net/c++_memory_leaks.aspx adresine (http://www.codersource.net/c++_memory_leaks.aspx)
bakabilirsin.

Selâmetle...

Flagrant
09/03/2007, 16:15
tesekkur ederim cevabin icin, bir de benim asil merak ettigim konu yukaridaki kodda gecen ifadelerin ne anlam ifade ettigi. Yani neyi gostermeye calismis ustteki kodda.

necipakif
09/03/2007, 16:29
Flagrant, yazdıklarımı düzelttim linkte cevap bulamadıysan, ondan sonra yorumumu yapayım. Yoksa gereksiz yoruma burada yer vermemek gerekir. İnşaalah işini görmüştür.

Selâmetle...