FreeMode

Bellek yönetim bayrağını ayarlar.

void  FreeMode(
   bool  mode      // yeni bayrak
   )

Parametreler

mode

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

Dönüş Değeri

Yok.

Not

Bellek yönetimi bayrağının ayarlanması CArrayObj kullanımında önemli bir noktadır. Dizi elemanları dinamik nesne işaretçileri olduğundan, diziden kaldırıldıklarında akıbetlerinin ne olacağını belirlemek oldukça önemlidir.

Bayrak ayarlanmışsa, elemanın diziden 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 dizinin kaldırılması gereklidir, aksi takdirde, 'new' operatörü kullanıldığında bellek boşaltılmamış elemanlarla dolacaktır.

Büyük veri miktarları terminalin eninde sonunda çökmesine hatta bozulmasına yol açacaktır. 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 dizi elemanları yerel değişkenler içinde depolanacaktır. Bu durumda dizinin 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 dizi sınıfı sorumludur.

Örnek:

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