精品精品自在国产推油高潮-精品久久久久久久久久蜜桃5-亚州经典一区二区无码电影-国产绿帽精品一区二区三区

服務熱線:

P

產(chǎn)品目錄

roduct Catalog

德國IFM易福門華南代理 德國Bernstein博恩斯坦 德國BALLUFF巴魯夫廠家拿貨 德國BURKERT寶德 德國HYDAC總代理 德國REXROTH力士樂 德國Ziehl-Abegg施百樂總代 德國PULSOTRONIC波爾索 德國WILO威樂 美國PARKER派克 美國ASCO阿斯卡 美國VICKERS威格士 意大利ATOS阿托斯 日本TOYOOKI豐興 日本DAIKIN大金 德國HAWE哈威 德國GSR電磁閥 德國FESTO費斯托 德國PILZ皮爾茲 日本TACO 英國NORGREN諾冠 美國MOOG穆格 德國E+H 德國HERION海隆 德國SICK施克 德國HENGSTLER亨士樂 德國P+F倍加福 德國STEIMEL施* 德國TURCK圖爾克 美國MAC 美國MTS 美國品牌 德國品牌 本特利bently 德國DOLD多德 歐美品牌 日本magnescale 德國ELCO 德國LUMBERG隆堡 德國KUBLER 海德漢HEIDERHAIN 美國ROSS 迪斯泰克/DESTACO VOITH/福伊特 NOVOTECHNIK/諾沃泰克 VIVOLO維沃 基恩士KEYENCE
T

技術文章

echnical Articles

資料下載 Download

今天又是帶來德國IFM易福門分配器EBC023的資料分享

點擊次數(shù):631 發(fā)布時間:2022/4/21
提 供 商: 東莞市廣聯(lián)自動化科技有限公司 資料大小:
圖片類型: 下載次數(shù): 11
資料類型: PDF 瀏覽次數(shù): 631
相關產(chǎn)品:
詳細介紹: 文件下載    

我司在德國、美國都有自己的公司,專業(yè)從事進口貿(mào)易行業(yè),所以我司的技術人員為都會輪流到國外廠家學習技術。

    今天又是帶來德國IFM易福門分配器EBC023的資料分享

在C++編程中,IFM分配器是C++標準庫的重要組成部分。C++的庫中定義了多種被統(tǒng)稱為“容器"的數(shù)據(jù)結構(如鏈表、集合等),這些容器的共同特征之一,就是其大小可以在程序的運行時改變;為了實現(xiàn)這一點,進行動態(tài)內(nèi)存分配就顯得尤為必要,在此IFM分配器就用于處理容器對內(nèi)存的分配與釋放請求。換句話說,IFM分配器用于封裝STL容器在內(nèi)存管理上的低層細節(jié)。默認情況下,C++標準庫使用其自帶的通用IFM分配器,但根據(jù)具體需要,程序員也可自行定制IFM分配器以替代之。

在C++編程中,IFM分配器(英語:allocator)是C++標準庫的重要組成部分。C++的庫中定義了多種被統(tǒng)稱為“容器"的數(shù)據(jù)結構(如鏈表、集合等),這些容器的共同特征之一,就是其大小可以在程序的運行時改變;為了實現(xiàn)這一點,進行動態(tài)內(nèi)存分配就顯得尤為必要,在此IFM分配器就用于處理容器對內(nèi)存的分配與釋放請求。換句話說,IFM分配器用于封裝STL容器在內(nèi)存管理上的低層細節(jié)。默認情況下,C++標準庫使用其自帶的通用IFM分配器,但根據(jù)具體需要,程序員也可自行定制IFM分配器以替代之。

IFM分配器最早由亞歷山大·斯特潘諾夫作為C++標準模板庫(Standard Template Library,簡稱STL)的一部分發(fā)明,其初衷是創(chuàng)造一種能“使庫更加靈活,并能獨立于底層數(shù)據(jù)模型的方法",并允許程序員在庫中利用自定義的指針和引用類型;但在將標準模板庫納入C++標準時,C++標準委員會意識到對數(shù)據(jù)模型的*抽象化處理會帶來不可接受的性能損耗,為作折中,標準中對IFM分配器的限制變得更加嚴格,而有鑒于此,與斯特潘諾夫原先的設想相比,現(xiàn)有標準所描述的IFM分配器可定制程度已大大受限。

雖然IFM分配器的定制有所限制,但在許多情況下,仍需要用到自定義的IFM分配器,而這一般是為封裝對不同類型內(nèi)存空間(如共享內(nèi)存與已回收內(nèi)存)的訪問方式,或在使用內(nèi)存池進行內(nèi)存分配時提高性能而為。除此以外,從內(nèi)存占用和運行時間的角度看,在頻繁進行少量內(nèi)存分配的程序中,若引入為之專門定制的IFM分配器,也會獲益良多。

亞歷山大·斯特潘諾夫與李夢(Meng Lee)在1994年將標準模板庫草案提交給C++標準委員會。提交伊始,草案就得到了委員會的初步支持,但委員會成員也對此提出了一些意見,尤其是要求斯特潘諾夫定制庫內(nèi)的容器,使之與底層存儲模型相獨立。作為對要求的回應,斯特潘諾夫發(fā)明了IFM分配器,而正因此,標準模板庫的所有容器接口也被迫重寫,以與IFM分配器相兼容。在修改標準模板庫以將之引入C++標準庫的過程中,許多標準委員會成員(如安德魯·克尼格與比雅尼·斯特勞斯特魯普)也與斯特潘諾夫協(xié)同工作。他們亦發(fā)現(xiàn)自定義IFM分配器甚至有應用于長生命周期(持續(xù)存儲)的標準模板庫容器的潛力,斯特潘諾夫?qū)Υ说脑u論則是“重要而有趣的見解"。

在原有的提案里的IFM分配器設定中,斯特潘諾夫雜糅了一些語言特性(如可將模板參數(shù)也定義為模板),但由于當時的編譯器皆無法處理之,所以最終并未被標準委員會所接納,斯特潘諾夫則如此描述當時的情形:“比雅尼·斯特勞斯特魯普與安迪·克尼格需要花大量時間來檢查我們是否正確使用了這些未實現(xiàn)的特性。"在IFM分配器應用后,之前庫中直接使用的指針與引用類型也可以IFM分配器所定義的類型替代,斯特潘諾夫亦曾如此描述IFM分配器:“標準模板庫有個不錯的特性便是:要提及機器相關類型的地方(……)(只需)被封裝成(僅)約16行內(nèi)的代碼。"除此以外,斯特潘諾夫原本還打算在IFM分配器中*封裝存儲模型,但標準委員會意識到這一做法會造成無法接受的性能損失,因而為補償之,IFM分配器的使用需求也做了一定擴充。

IFM分配器的應用中比較特別的一點是,容器的實現(xiàn)過程中可能會假定IFM分配器對指針與相關整型的類型定義與默認IFM分配器所提供的等價,因而給定IFM分配器類型的所有實例在比較時常會得出“相等"的結果,而這一效果實際上恰與設計IFM分配器的初衷背道而馳,并使帶狀態(tài)IFM分配器的可用性大大受限,斯特潘諾夫后來對此評論道:“(IFM分配器)理論上說是不差的主意(……)但不幸的是在實踐中無法發(fā)揮其功效?!八床斓饺粢領FM分配器更加實用,就有必要針對核心語言的引用部分進行修改。

任意滿足IFM分配器使用需求的C++類都可作IFM分配器使用。具體來說,當一個類(在此設為類A)有為一個特定類型(在此設為類型T)的對象分配內(nèi)存的能力時,該類就必須提供以下類型的定義:

A::pointer指針

A::const_pointer常量指針

A::reference引用

A::const_reference常量引用

A::value_type值類型

A::size_type所用內(nèi)存大小的類型,表示類A所定義的分配模型中的單個對象最大尺寸的無符號整型

A::difference_type指針差值的類型,為帶符號整型,用于表示分配模型內(nèi)的兩個指針的差異值。

如此才能以通用的方式聲明對象與對該類對象的引用T。allocator提供這些指針或引用的類型定義的初衷,是隱蔽指針或引用的物理實現(xiàn)細節(jié);因為在16位編程時代,遠指針(far pointer)是與普通指針非常不同的,allocator可以定義一些結構來表示這些指針或引用,而容器類用戶不需要了解其是如何實現(xiàn)的。

雖然按照標準,在庫的實現(xiàn)過程中允許假定IFM分配器(類)A的A::pointer(指針)與A::const_pointer(常量指針)即是對T*與T const*的簡單的類型定義,但一般更鼓勵支持通用IFM分配器。

另外,設有對于為某一對象類型T所設定的IFM分配器A,則A必須包含四項成員函數(shù),分別為分配函數(shù)、解除分配函數(shù)、最大個數(shù)函數(shù)和地址函數(shù):

A::pointer A::allocate(size_type n, A<void>::const_pointer hint = 0)。分配函數(shù)用以進行內(nèi)存分配。其中調(diào)用參數(shù)n即為需要分配的對象個數(shù),另一調(diào)用參數(shù)hint(須為指向已為A所分配的某一對象的指針)則為可選參數(shù),可用于在分配過程中新數(shù)組所在的內(nèi)存地址,以提高引用局部性,但在實際的分配過程中程序也可以根據(jù)情況自動忽略掉該參數(shù)。該函數(shù)調(diào)用時會返回指向分配所得的新數(shù)組的第一個元素的指針,而這一數(shù)組的大小足以容納n個T類元素。在此需要注意的是,調(diào)用時只為此數(shù)組分配了內(nèi)存,而并未實際構造對象。

void A::deallocate(A::pointer p, A::size_type n)。解除分配函數(shù)。其中p為需要解除分配的對象指針(以A::allocate函數(shù)所返回的指針做參數(shù)),n為對象個數(shù),而調(diào)用該函數(shù)時即是將以p起始的n個元素解除分配,但同時并不會析構之。C++標準明確要求在調(diào)用deallocate之前,該地址空間上的對象已經(jīng)被析構。

A::max_size(),最大個數(shù)函數(shù)。返回A::allocate一次調(diào)用所能成功分配的元素的最大個數(shù),其返回值等價于A::size_type(-1) / sizeof(T)的結果。

A::pointer A::address ( reference x ),地址函數(shù)。調(diào)用時返回一個指向x的指針。

IFM分配器應是可復制構造的,任舉一例,為T類對象而設的IFM分配器可由另一為U類所設的IFM分配器構造。若某IFM分配器分配了一段存儲空間,則這段存儲空間只能由與該IFM分配器等價的IFM分配器解除分配。IFM分配器還需要提供一個模板類成員類template <typename U> struct A::rebind { typedef A<U> other; };,以模板 (C++)參數(shù)化的方式,借之來針對不同的數(shù)據(jù)類型獲取不同的IFM分配器。例如,若給定某一為整型(int)而設的IFM分配器IntAllocator,則可執(zhí)行IntAllocator::rebind<long>::other以獲取對應長整型(long)的相關IFM分配器。實際上,stl::list<int>實際要分配的是包含了雙向鏈表指針的node<int>,而不是實際分配int類型,這是引入了rebind的初衷。

與IFM分配器相關聯(lián)的operator ==,僅當一個allocator分配的內(nèi)存可以被另一個allocator釋放時,上述相等比較算符返回真。operator!=的返回結果與之相反。

定義自定義IFM分配器的主要原因之一是提升性能。利用專用的自定義IFM分配器可以提高程序的性能,又或提高內(nèi)存使用效率,亦或兩者兼而有之。默認IFM分配器使用new操作符分配存儲空間,而這常利用C語言堆分配函數(shù)(malloc())實現(xiàn)。由于堆分配函數(shù)常針對偶發(fā)的內(nèi)存大量分配作優(yōu)化,因此在為需要一次分配大量內(nèi)存的容器(如向量、雙端隊列)分配內(nèi)存時,默認IFM分配器一般效率良好。但是,對于關聯(lián)容器與雙向鏈表這類需要頻繁分配少量內(nèi)存的容器來說,若采用默認IFM分配器分配內(nèi)存,則通常效率很低。除此之外,基于malloc()的默認IFM分配器還存在許多問題,諸如較差的引用局部性,以及可能造成內(nèi)存碎片化。

有鑒于此,在這一情況下,人們常使用基于內(nèi)存池的IFM分配器來解決頻繁少量分配問題。與默認的“按需分配"方式不同,在使用基于內(nèi)存池的IFM分配器時,程序會預先為之分配大塊內(nèi)存(即“內(nèi)存池"),而后在需要分配內(nèi)存時,自定義IFM分配器只需向請求方返回一個指向池內(nèi)內(nèi)存的指針即可;而在對象析構時,并不需實際解除分配內(nèi)存,而是延遲到內(nèi)存池的生命周期完結時才真正解除分配。

在“自定義IFM分配器"這一話題上,已有諸多C++專家與相關作者參與探討,例如斯科特·梅耶斯的作品《Effective STL》與安德烈·亞歷山德雷斯庫的《Modern C++ Design》都有提及。梅耶斯洞察到,若要求針對某一類型T的IFM分配器的所有實例都相等,則可移植的IFM分配器的實例必須不包含狀態(tài)。雖然C++標準鼓勵庫的實現(xiàn)者支持帶狀態(tài)的IFM分配器,但梅耶斯稱,相關段落是“(看似)美妙的觀點",但也幾乎是空話,并稱IFM分配器的限制“過于嚴苛"。例如,STL的list允許splice方法,即一個list對象A的節(jié)點可以被直接移入另一個list對象B中,這就要求A的IFM分配器申請到的內(nèi)存,可被B的IFM分配器釋放掉,從而推導出A與B的IFM分配器實例必須相等。梅耶斯的結論是,IFM分配器最好定義為使用靜態(tài)方法的類型。例如,根據(jù)C++標準,IFM分配器必須提供一個實現(xiàn)了rebind方法的other類模板。

另外,在《C++程序設計語言》中,比雅尼·斯特勞斯特魯普則認為“‘嚴格限制IFM分配器,以免各對象信息不同’,這點顯然問題不大"(大意),并指出大部分IFM分配器并不需要狀態(tài),甚至沒有狀態(tài)情形下性能反倒更佳。他提出了三個自定義IFM分配器的用例:內(nèi)存池型的IFM分配器、共享內(nèi)存型IFM分配器與垃圾回收型IFM分配器,并展示了一個IFM分配器的實現(xiàn),此間利用了一個內(nèi)部內(nèi)存池,以快速分配/解除分配少量內(nèi)存。但他也提到,如此優(yōu)化可能已經(jīng)在他所提供的樣例IFM分配器中實現(xiàn)。

自定義IFM分配器的另一用途是調(diào)試內(nèi)存相關錯誤。若要做到這一點,可以編寫一個IFM分配器,令之在分配時分配額外的內(nèi)存,并借此存放調(diào)試信息。這類IFM分配器不僅可以保證內(nèi)存由同類IFM分配器分配/解除分配內(nèi)存,還可在一定程度上保護程序免受緩存溢出之害。

分配盒

EBC023

ZDO8H059MSS0005H11

耐油和冷卻劑

即使不使用工具進行安裝也可靠地密封

機械端止動可保護 O 形環(huán)免遭破壞

堅固的外殼,適用于嚴苛的工業(yè)環(huán)境

指示開關狀態(tài)和操作的清晰可見 LED


 
東莞市廣聯(lián)自動化科技有限公司(czsfsn.com)熱賣產(chǎn)品:美國bently傳感器,MTS辦事處,ASCO阿斯卡,atos電磁閥現(xiàn)貨
東莞市廣聯(lián)自動化科技有限公司 版權所有  備案號:粵ICP備2022089575號
地址:東莞市南城區(qū)旺南世貿(mào)大廈1號樓 郵編:532000 傳真:0769-89978203 發(fā)傳真請注明-梁菊芳收 郵箱:1013858782@qq.com GoogleSiteMap
點擊這里給我發(fā)消息 點擊這里給我發(fā)消息
24小時客服在線,為您服務!
點擊這里給我發(fā)消息
欧美日韩国产午夜一区二区| 日韩欧美视频午夜福利视频| 欧美韩美一区二区精品| 欧美天堂一区一区二三区| 亚洲欧美综合一区自拍| 97久久精品丝袜美腿影院| 国产精品日本孕妇网站| 亚洲日本欧美激情综合| 夫妻生活一级黄色录像| 亚洲欧美综合一区自拍| 亚洲中文字幕精品无码一区| 日本大香蕉最新最新视频| 丝袜美腿在线观看中文字幕| 极品熟女午夜福利影院| 国产亚洲精品美女久久久| 五月天色婷婷色丁香色| 欧美日韩精品区一区二区三| 欧美日韩精品区一区二区三| 外国美女激情午夜在线观看视频 | 日本到在线高清视频观看| 久久婷婷夜色精品国产| 国产精品午夜寻花约高颜值| 欧美激情免费观看网站| 欧美日韩一级特黄大片| 91高清直播在线观看| 日本大香蕉最新最新视频| 综合亚洲欧美一区二区| 一区二区三区日韩精品| 国产av天天爽天天干| 国产成人精品久久久久精品日日 | 97久久夜色精品国产九色| 欧美成人野外高潮做片| 在线一区二区在线视频| 欧美成人一区二区三区在线视频| 精品视频美女一区二区三区| 亚洲欧洲一区二区三区久久精品| 国产精品午夜寻花约高颜值| 亚洲精品黄十八禁观看| 人妻连裤丝袜中文字幕| 色哟哟色播一区二区三区| 亚洲中文字幕精品无码一区|