FreeMode

메모리 관리의 플래그를 설정합니다.

void  FreeMode(
   bool  mode      // 새 플래그
   )

Parameters

mode

[in] 메모리 관리 플래그의 새 값.

Return Value

None.

Note

메모리 관리 플래그 설정은 CArrayObj 클래스 사용에 중요한 부분입니다. 배열 요소는 동적 객체에 대한 포인터이므로 배열에서 제거할 때 동적 객체로 수행할 작업을 결정하는 것이 중요합니다.

배열에서 요소를 제거하는 플래그가 설정되어 있으면 삭제 연산자에 의해 요소가 자동으로 삭제됩니다. 플래그가 설정되지 않은 경우 삭제된 객체에 대한 포인터는 여전히 사용자 프로그램의 어딘가에 있으며 나중에 프로그램에 의해 할당 해제된다고 가정합니다.

사용자 프로그램이 메모리 관리 플래그를 재설정할 경우 사용자는 프로그램 종료 전에 어레이 제거에 대한 자신의 책임을 이해해야 합니다. 그렇지 않으면 새 연산자가 요소에 할당한 메모리가 해제되지 않습니다.

대용량 데이터의 경우 터미널이 손상될 수도 있습니다.

사용자가 메모리 관리 플래그를 재설정하지 않으면 다른 함정이 있는 것입니다. 배열의 포인터 요소가 로컬 변수의 어딘가에 저장되면 배열을 제거하면 사용자 프로그램의 심각한 오류와 충돌이 발생합니다. 기본적으로 메모리 관리 플래그가 설정됩니다. 즉, 배열 클래스는 메모리 요소를 비우는 역할을 합니다.

예제:

//--- CArrayObj::FreeMode(bool) 예제
#include <Arrays\ArrayObj.mqh>
//---
void OnStart()
  {
   CArrayObj *array=new CArrayObj;
   //---
   if(array==NULL)
     {
      printf("객체 생성 오류");
      return;
     }
   //--- 자유 모드 플래그 재설정
   array.FreeMode(false);
   //--- 배열 사용
   //--- . . .
   //--- 배열 삭제
   delete array;
  }