From 11:00 PM CDT Friday, Nov 8 - 2:30 PM CDT Saturday, Nov 9, 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从内存中卸载时,LabVIEW内存管理器会释放该局部变量所用资源。假如子VI动态载入(如下图所示),则在加载子VI时分配内存给局部变量,在子VI卸载时释放。

释放内存

在LabVIEW中没有办法通过编程释放留给全局变量和局部变量的空间。但是可以在子VI已经运行完而主VI仍没有结束运行时释放子VI所占内存空间。在子VI运行结束后调用Request Deallocation VI可以释放子VI所占用的内存资源。



相关链接: KnowledgeBase 318FFO3N: Does Reading a Local and Global Variable Create a Copy of the Data in Memory?
KnowledgeBase 2T9ICKTL: How Can I Optimize the Memory Use in My LabVIEW VI?
KnowledgeBase 2HDEH9DT: How Much Memory Can LabVIEW Use?

附件:





报告日期: 01/15/2009
最近更新: 04/27/2009
文档编号: 4TE9PKV7