当前位置:网站首页>LabVIEW中局部变量和全局变量的分配
LabVIEW中局部变量和全局变量的分配
2022-08-01 07:10:00 【LabVIEW开发】
LabVIEW中局部变量和全局变量的分配
全局变量和局部变量是何时分配的?是否有办法通过编程释放其所占用的内存?
解答: 全局变量
全局变量存在于特殊的全局VI中,有别于应用程序的数据流。当从其他VI访问时,会在内存中复制一个变量空间,该空间会在调用VI从内存中释放时自动被释放掉。请注意复制较大的数组或大量的变量可能会消耗较长时间。
局部变量
当VI加载到内存中时,开始了对局部变量内存的分配。假如该VI是独立的,那么在运行时对局部变量分配内存,并在运行结束后销毁。假如局部变量在某子VI中声明,并且该子VI被主VI以静态方式载入,那么当主VI加载到内存中时就对该局部变量分配内存空间;在主VI从内存中卸载时,LabVIEW内存管理器会释放该局部变量所用资源。假如子VI动态载入(如下图所示),则在加载子VI时分配内存给局部变量,在子VI卸载时释放。

编辑
添加图片注释,不超过 140 字(可选)
释放内存
在LabVIEW中没有办法通过编程释放留给全局变量和局部变量的空间。但是可以在子VI已经运行完而主VI仍没有结束运行时释放子VI所占内存空间。在子VI运行结束后调用RequestDeallocation VI可以释放子VI所占用的内存资源。
有一个非常大的数组,但想保证在内存中只有一个拷贝.知道可以用移位寄存器,并用"ReplaceArray Subset" VI 保证只有一个拷贝。然而,想使之成为一个functionalglobal。因为,不能初始化这个移位寄存器,要找到一种方法来指定数组的类型。如果在循环中使用"InitializeArray" VI,将会导致内存中其他的拷贝。
解答:
举个例子,按照下面的尝试:
1) 关闭所有打开的VI,但保留LabVIEW打开。
2) 打开附件中的例子"TwoCopies in Memory.vi" 但不要运行它。
3) 打开Windows任务管理器,注意已经被LabVIEW使用的内存。
4) 保持缺省值不变,运行VI,注意到因为LabVIEW内存使用增加20 megabytes。这个缺省的设置导致一个含有1276900个双精度元素,即8个字节的数组,相当于大概10 megabytes。因为在内存中有两个数组拷贝,所以导致增加20megabytes。
另外一个方法,可以观察LabVIEW缓存的分配,通过选择Tools » Advanced » Show Buffer Allocations。应该看到一个分配在移位寄存器,另外一个拷贝在"Initialize Array" VI。
可通过"ReshapeArray" VI替换"Initialize Array" VI来指定数组的类型。通过这个方法,始终是对同一个数组进行操作,而不会在内存中造成额外的拷贝。
可通过下面的步骤看到这个效果:
1) 关闭所有打开的VI,保留LabVIEW打开。
2) 打开下面附件的例子程序"OneCopy in Memory.vi"但不要运行它。
3) 打开Windows任务管理器,并注意LabVIEW使用的内存。
4) 保留缺省值,运行VI。并注意内存使用大概增加了10 megabyte。 在这种情况下,只有一个10 megabyte 数组的拷贝。
另外一个方法,可以通过在LabVIEW中看内存的分配,通过选择Tools » Advanced » ShowBuffer Allocations。应该看到只是在给移位寄存器分配了内存。
LabVIEW、LabVIEW开发、LabVIEW编程、LabVIEW程序
上文中提到的例子和资料,均在word中的附件里,可点击下载。进一步了解,可联系我们。
LabVIEW中局部变量和全局变量的分配 - 北京瀚文网星科技有限公司 (bjcyck.com)
边栏推荐
- sum of special numbers
- 仿牛客网项目总结
- mysql的行锁和间隙锁
- 13 - JUC CountDownLatch concurrent programming
- 2022年牛客多校第四场补题
- Does flinkcdc have any solution for mysql's date field type conversion?
- 三维坐标系距离
- POJ2031空间站题解
- Srping bean in the life cycle
- LeetCode Question of the Day (309. Best Time to Buy and Sell Stock with Cooldown)
猜你喜欢

Using FiddlerScript caught poly FiddlerScript 】 【 download

仿牛客网讨论社区项目—项目总结及项目常见面试题

Data organization -- singly linked list of the linear table

阿里三面:MQ 消息丢失、重复、积压问题,该如何解决?

Dell PowerEdge Server R450 RAID Configuration Steps

Detailed explanation of the crawler framework Scrapy

阿里云李飞飞:中国云数据库在很多主流技术创新上已经领先国外

Srping bean in the life cycle

最小生成树

安装SQL Server详细教程
随机推荐
Explosive 30,000 words, the hardest core丨Mysql knowledge system, complete collection of commands [recommended collection]
crypto-js使用
第02章 MySQL的数据目录【1.MySQL架构篇】【MySQL高级】
上课作业(7)——#598. 取余运算(mod)
金山打字通 官网 下载
特别数的和
Dell PowerEdge Server R450 RAID Configuration Steps
MySQL row locks and gap locks
图像基本操作的其他内容
Win任务栏图标异常解决
The use of Golang: go template engine
MATLAB program design and application of MATLAB 2.5
信息系统项目管理师必背核心考点(五十六)配置控制委员会(CCB)的工作
The BP neural network based on MATLAB voice characteristic signal classification
湖仓一体电商项目(一):项目背景和架构介绍
Srping中bean的生命周期
"By sharing" northwestern university life service | | bytes a second interview on three sides by HR
LeetCode240+312+394
安装SQL Server详细教程
奇葩问题 npm install 报错 gyp ERR