FreeMode

リスト要素の削除に使用されるメモリ管理のフラグを取得します。

void  FreeMode(
  bool  mode      // 新しい値
  )

パラメータ

mode

[in] メモリ管理フラグの新しい値

注意事項

メモリ管理のフラグの設定は CList クラス使用にあたって重要な部分です。リスト要素は動的オブジェクトへのポインタであるため、リストから削除する際にどのように処理するかを決定することが重要です。

フラグが設定されている場合は、リストから除去された際に、要素は自動的に delete オペレータによって削除されます。フラグが設定されていない場合は、削除されたオブジェクトへのポインタがユーザプログラムのどこかに残っていて、後にプログラムによって解放されると想定されています。

ユーザプログラムががメモリ管理フラグをリセットした場合は、ユーザは、プログラムの終了前に配列除去の責任があることを理解する必要があります。さもないと、 new 演算子によって要素に割り当てられたメモリが解放されません。

データが大量の場合、端末の動作が停止することもあります。

ユーザがメモリ管理フラグをリセットしない場合は、別の問題が起こる可能性があります。リストポインタがローカル変数に格納されている場合、リスト除去は重大なエラーにつながり、ユーザプログラムをクラッシュします。デフォルトでは、メモリ管理フラグが設定されていて、メモリ要素を解放する責任はリストクラスにあります。

例:

//--- CList::FreeMode(bool) の例  
#include <Arrays\List.mqh>  
//---  
void OnStart()  
 {  
  CList *list=new CList;  
  //---  
  if(list==NULL)  
    {  
    printf("Object create error");  
    return;  
    }  
  //--- メモリ管理フラグをリセットする
  list.FreeMode(false);  
  //--- リストを使用する
  //--- . にて。にて。 
  //--- リストを削除する
  delete list;  
 }