久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁 > 測試測量 > 設計應用 > labview深入探索------類型轉換、數組字符串與內存管理

labview深入探索------類型轉換、數組字符串與內存管理

作者: 時間:2017-01-09 來源:網絡 收藏



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



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

本文引用地址:http://cqxgywz.com/article/201701/337267.htm

labview內部是如何存儲數組和字符串的

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



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

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

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

BOOLEAN型數據是字節型數據,該字節非零則為TRUE,為0則為FALSE,BOOLEAN型數組在內存中的分布看下圖。



同C語言一樣,字符串是一個字符型數組,不同的是,C字符串并不表明字符串長度,它是以