<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 測試測量 > 設(shè)計應(yīng)用 > labview深入探索------類型轉(zhuǎn)換、數(shù)組字符串與內(nèi)存管理

          labview深入探索------類型轉(zhuǎn)換、數(shù)組字符串與內(nèi)存管理

          作者: 時間:2017-01-09 來源:網(wǎng)絡(luò) 收藏



          很多時候,我們無法預(yù)先知道我們需要的數(shù)組大小,比如我們需要一個字符串?dāng)?shù)組,來記錄報警信息,無法知道會有多少報警發(fā)生,這樣就需要根據(jù)實際情況,來不斷地改變數(shù)組的大小,一個比較好的方法是每次申請一定數(shù)量的內(nèi)存,而不是一個元素的大小,這樣,當(dāng)內(nèi)存再次需要的時候,我們可以再次申請,當(dāng)整個循環(huán)結(jié)束的時候,我們可以去掉多余的空間,得到結(jié)果。



          內(nèi)存碎片的問題,對于任何編程語言都是存在的,當(dāng)內(nèi)存碎片越來越多的情況下,程序運行會越來越慢,內(nèi)存管理器要進行大量的搜索試圖找到可用的空間,碎片是如何產(chǎn)生的那,比如我們有三個操作ABC,A、B、C分別申請了三塊內(nèi)存,他們是連續(xù)的,當(dāng)B的內(nèi)存釋放的時候,在A、C中間的內(nèi)存區(qū)域就成了碎片,當(dāng)我們在一個子VI中不斷地用BUILD ARRAY或者conctenate string 時,不斷引起內(nèi)存的申請和釋放,這樣,內(nèi)存空間碎片會越來越多。也就是內(nèi)存的間隙越來越多,作為LV的用戶,我們沒有辦法控制內(nèi)存碎片,只能盡量地使用固定長度的數(shù)組或者字符串,我們可以做一個標(biāo)志,用不太可能的數(shù)據(jù)來填充這個數(shù)組,這樣通過這個特殊的數(shù)或者特殊字符,就可以得到實際數(shù)據(jù)。

          本文引用地址:http://www.ex-cimer.com/article/201701/337267.htm

          labview內(nèi)部是如何存儲數(shù)組和字符串的

          了解數(shù)組在內(nèi)存中的存儲形式非常重要,有助于合理組織數(shù)據(jù),高效利用內(nèi)存.有助于理解和使用CIN,有助于理解和使用動態(tài)鏈接庫.一般都會認為只有大的數(shù)組結(jié)構(gòu)或者字符串才消耗大量的內(nèi)存,其實不然,由于LABVIEW在內(nèi)存中構(gòu)造數(shù)據(jù)的特殊形式,較小的數(shù)組或者字符串有時也會占用可觀的內(nèi)存.



          對于一維數(shù)值型數(shù)組,它包括四個字節(jié)(I32)的數(shù)組長度,之后是連續(xù)的數(shù)據(jù)元素所占的空間。

          對于二維的數(shù)值型數(shù)組,它包括兩個I32(8個字節(jié))表示數(shù)組行列長度,之后是按行存儲的元素序列。

          正如我們看到的,LV在內(nèi)存中是一段連續(xù)的空間來存儲數(shù)據(jù)的,這樣當(dāng)需要增加數(shù)組長度的時候,由于內(nèi)存碎片的影響,LV可能不得不移動整個數(shù)組到一個新的內(nèi)存位置。除了存儲實際數(shù)據(jù),LV還額外增加了數(shù)組長度(I32類型),所以,對一維數(shù)組,最大可以包括2的32次方-1個元素。

          BOOLEAN型數(shù)據(jù)是字節(jié)型數(shù)據(jù),該字節(jié)非零則為TRUE,為0則為FALSE,BOOLEAN型數(shù)組在內(nèi)存中的分布看下圖。



          同C語言一樣,字符串是一個字符型數(shù)組,不同的是,C字符串并不表明字符串長度,它是以看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();