From Saturday, Nov 23rd 7:00 PM CST - Sunday, Nov 24th 7:45 AM CST, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.



LabVIEWのローカル変数およびグローバル変数へのメモリ割り当てについて



使用ソフトウェア:
使用ソフトウェア・バージョン: 8.5.1
使用ソフトウェア・バージョンに特化:
二次のソフトウェア: N/A

問題: LabVIEWアプリケーションを作成しています。メモリ管理の目的でローカル変数およびグローバル変数にメモリがいつ割り当てられ、いつ解放されるのかを知る必要があります。プログラム的にメモリを解放する方法はありますか?

解決策:

グローバル変数

グローバル変数は特殊なグローバルVI内に存在し、アプリケーションのフローとは切り離されています。
別のVIからグローバル変数にアクセスすると、そのVIはグローバル変数のコピーをメモリ上に割り当てます。
このコピーは、呼び出しVIがメモリからアンロードされると解放されます。大規模なサイズの配列やその他サイズの大きい変数のコピーは負担が大きく、時間を要する場合があることにご注意ください。

ローカル変数

ローカル変数のメモリ割り当ては、呼び出しVIがメモリにロードされる際に行われます。呼び出しVIがスタンドアローンVIの場合、ローカル変数のメモリはランタイム時に割り当てられ、VI実行終了後に解放されます。メインVIに静的にロードされたサブVI内でローカル変数が宣言された場合、メインVIがメモリ上にロードされた際にローカル変数へメモリが割り当てられ、メインVIがアンロードされた直後にLabVIEWメモリマネージャにより、ローカル変数へのメモリは解放されます。下図のようにサブVIが動的に呼び出された場合は、サブVI呼び出し時にローカル変数へメモリが割り当てられ、サブVIがアンロードされた直後にLabVIEWメモリマネージャにより、メモリは解放されます。


メモリ解放

ローカル変数やグローバル変数用に確保されたメモリをLabVIEW上でプログラム的に解放する方法はありません。しかし、サブVIの実行用に確保されたメモリを最上位VIの終了前に解放することはできます。サブVIの実行終了後にメモリ解放要求(アプリケーション制御 メモリ管理)を呼び出し、サブVIに割り当てられたメモリを破棄します。  



関連リンク:

添付:





報告日時: 01/15/2009
最終更新日: 03/31/2009
ドキュメントID: 4TE9PKV7