LabVIEW中局部變數和全域變數的記憶體分配

更新 Jul 25, 2023

產品資訊

軟體

  • LabVIEW Base
  • LabVIEW Student
  • LabVIEW Full

問題敘述

我正在編寫一個LabVIEW應用程式,為了記憶體管理目的做考量,我需要知道何時來分配和釋放全域變數和局部變數。有沒有辦法能以程式方式重新分配此記憶體?

解決方案

局部變數

呼叫VI載入到記憶體時,將發生局部變數的分配。如果它是獨立的VI,則局部變數的記憶體在執行時分配,並在執行結束時釋放。如果在主VI中靜態載入的子VI中聲明了局部變數,則在將主VI載入到記憶體中並在主VI卸載後不久由LabVIEW記憶體管理器重新分配了局部變數的記憶體。如果子VI是動態載入的,如下圖所示,則局部變數的記憶體將在子VI的調用中分配,並在子VI卸載後不久由LabVIEW記憶體管理器重新分配。

全域變數

全域變數存在於特殊的全域VI中,與應用程式流分開。當被另一個VI訪問時,它們將變數的副本帶入記憶體。從記憶體中卸載調用VI時,該副本將被銷毀。請注意,複製大型陣列或其他大型變數可能會非常耗時。

釋放記憶體

LabVIEW中無法透過程式方式為全域變數和局部變數分配記憶體,但您可以在top level VI完成之前為執行子VI分配記憶體。子VI完成操作以清除子VI的記憶體後,請執行 Request Deallocation VI

相關資訊

自LabVIEW 2012起,不再支援FP.Open屬性節點,需要使用FP.Open Invoke節點代替屬性節點,以實現與以下相同的功能。