해결책
로컬 변수
로컬 변수의 메모리 할당은 호출 VI가 메모리에 로드될 때 발생합니다. 독립 실행형 VI 인 경우 로컬 변수의 메모리는 런타임에 할당되고 실행이 끝날 때 할당 해제됩니다. 메인 VI 내 정적으로 로드되는 SubVI에서 로컬 변수가 선언된 경우, 로컬 변수의 메모리는 메인 VI가 메모리에 로드될 때 할당되고 메인 VI가 언로드 된 직후 LabVIEW 메모리 관리자에 의해 할당 해제됩니다. 아래 이미지와 같이 SubVI가 동적으로 로드되면 로컬 변수의 메모리는 SubVI 호출 시 할당되고 SubVI가 언로드 된 직후 LabVIEW 메모리 관리자에 의해 할당 해제됩니다.
글로벌 변수
글로벌 변수는 어플리케이션의 흐름과는 별도로 특수 글로벌 VI에 존재합니다. 다른 VI가 액세스할 때 변수의 복사본을 메모리로 가져옵니다. 이 복사본은 호출 VI가 메모리에서 언로드될 때 해제됩니다. 크기가 큰 배열이나 변수를 복사하는 것은 로드가 많이 걸려 시간이 많이 소요될 수 있습니다.
메모리 할당 해제
LabVIEW에서 글로벌 및 로컬 변수로 설정한 메모리를 프로그래밍 방식으로 할당 해제 할 수 있는 방법은 없지만 최상위 VI가 완료되기 전에 SubVI를 실행하기 위해 별도로 할당한 메모리를 해제할 수 있습니다. SubVI의 작업을 마친 후 SubVI에서 사용한 메모리를 해제하기 위해 Request Deallocation VI를 호출합니다.