동적 배열 객체

동적 배열

최대 4차원 배열을 선언할 수 있습니다. 동적 배열(첫 번째 대괄호 쌍에 지정되지 않은 값의 배열)을 선언하면 컴파일러는 자동으로 위 구조의 변수(동적 배열 개체)를 만들고 올바른 초기화를 위한 코드를 제공합니다.

동적 어레이는 선언된 블록의 가시성 영역을 벗어나면 자동으로 해제됩니다.

예제:

double matrix[][10][20]; // 3차원 동적 배열
ArrayResize(matrix,5);   // 첫번째 차원의 크기 설정

정적 배열 #

모든 중요한 배열 치수가 명시적으로 지정되면 컴파일러는 필요한 메모리 크기를 미리 할당합니다. 이러한 배열을 정적 배열이라고 합니다. 그럼에도 불구하고 컴파일러는 동적 배열의 개체에 추가 메모리를 할당합니다. 동적 배열은 (개체) 사전 할당된 정적 버퍼(배열을 저장하기 위한 메모리 부분)와 연결됩니다.

동적 배열 개체를 만드는 이유는 이 정적 배열을 일부 함수에 매개 변수로 전달해야 하기 때문입니다.

예제:

double stat_array[5]; // 1차원 정적 배열
some_function(stat_array);
...
bool some_function(double& array[])
  {
   if(ArrayResize(array,100)<0return(false);
   ...
   return(true);
  }

구조의 배열

정적 배열이 구조의 멤버로 선언될 때 동적 배열 개체는 생성되지 않습니다. 이는 Windows API에서 사용되는 데이터 구조의 호환성을 보장하기 위해 수행됩니다.

그러나 구조물의 멤버로 선언된 정적 어레이는 MQL5 함수에 전달될 수도 있습니다. 이 경우 매개 변수를 전달하면 동적 배열의 임시 개체가 생성됩니다. 이러한 개체는 정적 배열 - 구조의 멤버와 연결됩니다.

더 보기

배열 함수, 변수 초기화, 가시성 범위 및 변수 수명, 객체 생성 및 삭제