LabVIEW에서 로컬 및 글로벌 변수에 대한 메모리 할당

업데이트 됨 Dec 16, 2020

해당 제품

소프트웨어

  • LabVIEW Base
  • LabVIEW Student
  • LabVIEW Full

문의사항

LabVIEW 어플리케이션을 만드는 중이며 메모리 관리 목적으로 전역 및 로컬 변수에 메모리가 할당되고 할당 해제되는 타이밍를 알아야합니다. 프로그래밍 방식으로 이 메모리를 할당 해제하는 방법이 있습니까?

해결책

로컬 변수

로컬 변수의 메모리 할당은 호출 VI가 메모리에 로드될 때 발생합니다. 독립 실행형 VI 인 경우 로컬 변수의 메모리는 런타임에 할당되고 실행이 끝날 때 할당 해제됩니다. 메인 VI 내 정적으로 로드되는 SubVI에서 로컬 변수가 선언된 경우, 로컬 변수의 메모리는 메인 VI가 메모리에 로드될 때 할당되고 메인 VI가 언로드 된 직후 LabVIEW 메모리 관리자에 의해 할당 해제됩니다. 아래 이미지와 같이 SubVI가 동적으로 로드되면 로컬 변수의 메모리는 SubVI 호출 시 할당되고 SubVI가 언로드 된 직후 LabVIEW 메모리 관리자에 의해 할당 해제됩니다.

글로벌 변수

글로벌 변수는 어플리케이션의 흐름과는 별도로 특수 글로벌 VI에 존재합니다. 다른 VI가 액세스할 때 변수의 복사본을 메모리로 가져옵니다. 이 복사본은 호출 VI가 메모리에서 언로드될 때 해제됩니다. 크기가 큰 배열이나 변수를 복사하는 것은 로드가 많이 걸려 시간이 많이 소요될 수 있습니다.

메모리 할당 해제

LabVIEW에서 글로벌 및 로컬 변수로 설정한 메모리를 프로그래밍 방식으로 할당 해제 할 수 있는 방법은 없지만 최상위 VI가 완료되기 전에 SubVI를 실행하기 위해 별도로 할당한 메모리를 해제할 수 있습니다. SubVI의 작업을 마친 후 SubVI에서 사용한 메모리를 해제하기 위해 Request Deallocation VI를 호출합니다.

추가 정보

FP.Open 프로퍼티 노드는 LabVIEW 2012 이후 더 이상 지원되지 않습니다. 프로퍼티 노드 대신 FP.Open Invoke 노드를 사용하여 아래와 같은 동일한 기능을 수행할 수 있습니다.