您的位置 首页 电源

labview深化探究—–内存办理和缓存重用

使用过常规C语言的朋友都知道,C允许编程者,申请内存,再分配内存和释放内存,这为编程者提供了极大的方便的同时,也造成了非常多的隐患,可以说

运用过惯例C言语的朋友都知道,C答应编程者,请求内存,再分配内存和开释内存,这为编程者供给了极大的便利的一起,也造成了十分多的危险,能够说,C程序的运转中许多不可思议的过错都和内存走漏有关.程序或许接连运转几个小时没有任何问题,但忽然就产生过错,关于一个比较复杂的程序,追寻内存走漏十分困难,常常要借用第三方的专门的内存剖析东西.

C的内存过错最多的是两种状况:

1.数组越界:

int Array[10];//体系主动分配10*4BYTE的空间

for(int i=0;i<100;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菜单中的show vi property(CTRL+I)来检查当时VI的内存运用状况.

三.经过Profile Window 来检查.

总结以上内容,得出几个关键:

.由于LV操控内存办理,因而很难知道LV的内存是怎么分配的.

.杰出的编程风格会改善LV的内存运用状况.

.VI的内存运用分红PANEL,BLOCK,CODE,DATA四部分.

下面的部分详细剖析这四部分的内存是怎么运用的.

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

前面板首要是由操控器(control)和指示器(indicator)组成的,每个操控器和指示器都有自己的数据复制,在修改的状况下咱们能够随意更改操控器和指示器的值,即便他们经过数据流连在一起,只要不运转,指示器没有新的数据流到来,它始终保持本来的值.操控器和指示器的数据复制称作操作数据,由于只用经过具体操作才干改动它的值,框图的中的数据(数据流)称作履行数据,由于只要VI运转时分才起作用.能够了解成连线上的数据.

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/dianyuan/211600.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部