FreeMode

Liste elemanlarının silinmesi sırasında kullanılacak bellek yönetim bayrağını ayarlar.

void  FreeMode(
   bool  mode      // yeni değer
   )

Parametreler

mode

[in] Bellek yönetim bayrağı için yeni değer.

Not

Bellek yönetimi bayrağının ayarlanması CList kullanımında önemli bir noktadır. Liste elemanları dinamik nesne işaretçileri olduğundan, listeden kaldırıldıklarında akıbetlerinin ne olacağını belirlemek oldukça önemlidir. Bayrak ayarlanmışsa, elemanın listeden kaldırılmasının ardından 'delete' operatörü ile eleman otomatik olarak silinecektir. Bayrak ayarlanmamışsa, silinen elemanın işaretçisinin hala program içerisinde bir yerlerde olduğu varsayılır ve daha sonra programdan kaldırılacaktır.

Kullanıcının bellek yönetim bayrağını sıfırlaması durumunda, program tamamlanmadan listenin kaldırılması gereklidir, aksi takdirde, 'new' operatörü kullanıldığında bellek boşaltılmamış elemanlarla dolacaktır. Büyük miktarlardaki veriler terminalin çökmesine hatta bozulmasına neden olabilir.

Kullanıcının bellek yönetim bayrağını sıfırlamaması durumunda ise başka bir "tehlike" doğacaktır. İşaretçilerin kullanılması durumunda liste elemanları yerel değişkenler içinde depolanacaktır. Bu durumda listenin kaldırılması kritik hataya yol açacak ve programı çökertecektir. Varsayılan olarak, bellek yönetim bayrağı ayarlıdır (yönetim mekanizması açık), yani belleğin boşaltılmasından liste sınıfı sorumludur.

Örnek:

//--- CList::FreeMode(bool) için bir örnek  
#include <Arrays\List.mqh>  
//---  
void OnStart()  
  {  
   CList *list=new CList;  
   //---  
   if(list==NULL)  
     {  
      printf("Nesne oluşturma hatası");  
      return;  
     }  
   //--- serbest durum bayrağını sıfırla  
   list.FreeMode(false);  
   //--- listeyi kullan  
   //--- . . .  
   //--- listeyi sil  
   delete list;  
  }