labview深入探索分析和总结.docx

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

labview深入探索 内存管理和缓存重用

使用过常规C语言的朋友都知道,C允许编程者,申请内存,再分配内存和释放内存,这为编程者提供了极大的方便的同时,也造成了非常多的隐患,可以说,C程序的运行中许多莫名其妙的错误都和内存泄露有关.程序可能连续运行几个小时没有任何问题,但突然就发生错误,对于一个比较复杂的程序,追踪内存泄露非常困难,经常要借用第三方的专门的内存分析工具.

C的内存错误最多的是两种情况:

1.数组越界:

intArray[10];//系统自动分配10*4BYTE的空间

for(inti=0;i100;i++)Array[i]=i;//写入前10个元素时没有问题,超过10个,C会继续向连续的内存空间写数据如果该内存空间无用,没有问题.如果这段内存空间被系统或者其它应用程序占用,错误的写入可能会导致系统崩

溃,经常提示的是发生意外错误,比较新的操作系统一般不会崩溃,会提示内存写错误,应用程序退出.2.分配内存没有释放(内存泄露)

int*p;//定义整型指针

p=(int*)malloc(100*sizeof(int));//申请100*4个字节的内存if(p==NULL)//系统无法分配,退出程序

{

return(errro);

}

free(p);//释放申请的内存空间如果没有这个语句,重复调用这段程序,导致占用的内存空间越来越多.

labview则完全不同,它的内存分配是由LV的内存管理器自动完成的,因此不存在用户内存释放的问题,也不存在数组越界的问题,既然如此,讨论LV的内存管理有意义吗?

答案是:非常重要.经常有人抱怨,LV的运行速度缓慢,性能很差,这里主要的原因都是内存使用不当的原因.

LV随时都在不断地进行内存分配,再分配和释放的工作,只不过这些工作是由LV内存管理器自动进行的,对用户来说

是在后台进行的,是不受用户控制的.同时,内存管理器的工作是非常繁重和缓慢的,它的大量无意义的工作将会导致程序运行效率的急剧下降.

改进LV内存使用的最好办法是良好的编程风格.

一个VI占用的内存空间分成四个部分.

1.PANEL 前面板

2.BLOCK DIAGRAM 程序框图

3.CODE SPACE 代码空间

4.DATA SPACE 数据空间

代码空间指的是框图编译后形成的机器码所占的空间.

数据空间包括前面板控制器和指示器的值和默认值,常量和动态定义的数据.

当打开一个VI的时候,面板空间,代码空间和数据空间载入内存,该VI的子VI的代码空间和数据空间载入内存.

如果选择显示程序框图,则程序框图空间也载入内存.

可以看出,当打开一个VI时,LV只载入需要的部分,自VI只载入代码空间和数据空间.所以不必要考虑子VI的前面板和程序框图.如上图,如果把主VI的部分分成多个SUBVI,可以有效地节约内存的使用.因为SUBVI一方面不再需要前面板和程序框图,只有代码空间和数据空间载入内存,并且在需要的时候,LV可以收回数据空间内存并重新利用.当我们打开一个非常大的,包含很少SUBVI的程序,速度会非常缓慢,相反,一个很大的包含很多的SUBVI的程序打开速度非常快,就是这个原因.

当我们编写VI的时候经常要查看它的内存使用情况,有几种方法:

一.通过ABOUT对话框,可以查到操作系统为LV分配的全部内存.全部内存包括打开的VI占用的和LV本身占用的.在打开LV之后,记录下这个值(LV本身占用的),然后编辑你的VI,再查看ABOUT对话框,他们的差就是你的VI占用的内存,这个方法可以大概估计您的VI的内存使用情况

二:通过FILE菜单中的showviproperty(CTRL+I)来查看当前VI的内存使用情况.

三.通过ProfileWindow来查看.

总结以上内容,得出几个要点:

.因为LV控制内存管理,因此很难知道LV的内存是如何分配的.

.良好的编程风格会改进LV的内存使用情况.

.VI的内存使用分成PANEL,BLOCK,CODE,DATA四部分.

下面的部分详细分析这四部分的内存是如何使用的.

首先看看PANEL和BLOCK,这两个部分是占用内存的主要部分.

前面板主要是由控制器(control)和指示器(indicator)组成的,每个控制器和指示器都有自己的数据拷贝,在编辑的情况下我们可以随意更改控制器和指示器的值,即使他们通过数据流连在一起,只要不运行,指示器没有新的数据流到来,它始终保持原来的值.控制器和指示器的数据拷贝称作操作数据,因为只用通过具体操作才能改变它的值,框图的中的数据(数据流)称作执行数据,因为只有VI运行时候才起作用.可以理解成连线上的数据.

对于一个不显示的子VI是不存在操作数据的,如果

文档评论(0)

tianya189 + 关注
官方认证
内容提供者

该用户很懒,什么也没介绍

认证主体阳新县融易互联网技术工作室
IP属地湖北
统一社会信用代码/组织机构代码
92420222MA4ELHM75D

1亿VIP精品文档

相关文档