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.
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应用开发,因为需要进行内存管理,我想知道全局变量和局部变量是何时分配的?是否有办法通过编程释放其所占用的内存?
全局变量存在于特殊的全局VI中,有别于应用程序的数据流。当从其他VI访问时,会在内存中复制一个变量空间,该空间会在调用VI从内存中释放时自动被释放掉。请注意复制较大的数组或大量的变量可能会消耗较长时间。
局部变量
当VI加载到内存中时,开始了对局部变量内存的分配。假如该VI是独立的,那么在运行时对局部变量分配内存,并在运行结束后销毁。假如局部变量在某子VI中声明,并且该子VI被主VI以静态方式载入,那么当主VI加载到内存中时就对该局部变量分配内存空间;在主VI从内存中卸载时,LabVIEW内存管理器会释放该局部变量所用资源。假如子VI动态载入(如下图所示),则在加载子VI时分配内存给局部变量,在子VI卸载时释放。
释放内存
在LabVIEW中没有办法通过编程释放留给全局变量和局部变量的空间。但是可以在子VI已经运行完而主VI仍没有结束运行时释放子VI所占内存空间。在子VI运行结束后调用Request Deallocation VI可以释放子VI所占用的内存资源。
|