中文字幕第五页-中文字幕第页-中文字幕韩国-中文字幕最新-国产尤物二区三区在线观看-国产尤物福利视频一区二区

C++內存對齊怎么理解

這篇文章主要講解了“C++內存對齊怎么理解”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“C++內存對齊怎么理解”吧!

成都創新互聯公司致力于成都網站制作、網站建設,成都網站設計,集團網站建設等服務標準化,推過標準化降低中小企業的建站的成本,并持續提升建站的定制化服務水平進行質量交付,讓企業網站從市場競爭中脫穎而出。 選擇成都創新互聯公司,就選擇了安全、穩定、美觀的網站建設服務!

一、為什么要內存對齊?

訪問未對齊的內存,處理器要訪問兩次(數據先讀高位,再度地位),訪問對齊的內存,處理器只要訪問一次,為了提高處理器讀取數據的效率,我們使用內存對齊。Windows 默認對齊數為8字節,Linux 默認對齊數為4字節。

使用內存對齊的原因還有平臺的原因:不是所有的硬件平臺都能訪問特定的地址上的任意數據,某些平臺只能訪問特定的地址上的獲取數據,否則會拋出異常。

二、內存對齊原則:

在內存中,編譯器按照成員列表分別為 每個結構體變量分配內存,當存儲過程中需要對齊的需求時,編譯器會在成員之間留下額外的內存空間。如果想要確認結構體占多少存儲空間,則使用關鍵字sizeof查看大小,如果想得知結構體的某個特定成員在結構體的位置,則使用offsetof(頭文件stddef.h)

結構體或聯合體的數據成員、第一個成員放到0片便宜的地方,以后每個數據成員放到自身對齊的整數倍偏移處。(對齊數是變量自身大小和默認對齊數的較小值)結構體的大小必須是最大對齊數的整數倍。

三、對于結構體字節對齊,有哪些規則?

總體上我們假設結構體起始位置為0x0000,N為設置的n字節對齊,則滿足公式0x0000%N==0,來決定結構體成員存儲的位置。

1.如果是采用默認對齊規則,需要執行以下的步驟:

(1)結構體的成員的自身對值N(數據類型占有的空間,比如在32位機器下int型為4字節,自身對值為4)需要與存儲位置做出判斷。若滿足“起始位置%N=0”(除了結構體的第一個成員,N也要必須滿足>=成員自身對齊值),則把該成員存放在該起始位置。若前一個成員與目前成員的存儲位置有一定的距離,則把該距離作為填充空間。

(2)所有結構體的成員都分配完存儲位置之后,則還要結構體本身也要進行對齊。結構體本身也要滿足“(M+X)%S=0”來進行對齊,其中M+X是整個結構體占有的存儲空間大小,M是所有結構體的成員的存儲空間大小總和,X是為了滿足S的整數倍的填補空間大小,S是就是結構體成員中自身對齊值最大的那個。

四、如果是采用#pragma pack(N)規則,需要執行以下的步驟:

(1)結構體成員的自身對齊值是偏移的量。若滿足“起始位置%N=0”(這里N是指定對齊值,即#pragma pack(N)),則可以把該成員存儲到該起始位置中,偏移量為該成員的自身對齊值(比如int型自身對齊值為4,占用4個字節的內存位置)。

(2)結構體自身對齊值為該結構體的所有成員自身對齊值中最大的值,但又因為結構體的有效對齊值(即指定對齊值)為N,所以“(M+X)%N=0”,M+X是該結構體存儲的空間大小。

五、為什么我的編譯器在結構中留下了空洞?這導致空間浪費而且無法與外部數據文件進行“二進制”讀寫。能否關掉填充,或者控制結構域的對齊方式?

當內存中的值合理對齊時,很多機器都能非常高效地訪問。例如,在按字節尋址的機器中,2字節的short int型變量必須放在偶地址上,而4字節的long int型變量則必須存放在4的整數倍地址上。某些機器甚至根本就不能訪問沒有對齊的地址,因此必須要求所有的數據都正確地對齊。

六、什么叫做位域?

位域是指信息在存儲時,并不需要占用一個完整的字節, 而只需占幾個或一個二進制位。例如在存放一個開關量時,只有0和1 兩種狀態, 用一位二進位即可。為了節省存儲空間,并使處理簡便,C語言又提供了一種數據結構,稱為“位域”或“位段”。所謂“位域”是把一個字節中的二進位劃分為幾 個不同的區域, 并說明每個區域的位數。每個域有一個域名,允許在程序中按域名進行操作。 這樣就可以把幾個不同的對象用一個字節的二進制位域來表示。

感謝各位的閱讀,以上就是“C++內存對齊怎么理解”的內容了,經過本文的學習后,相信大家對C++內存對齊怎么理解這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創新互聯,小編將為大家推送更多相關知識點的文章,歡迎關注!

本文標題:C++內存對齊怎么理解
分享網址:http://www.2m8n56k.cn/article48/poochp.html

成都網站建設公司_創新互聯,為您提供虛擬主機網站設計公司響應式網站Google外貿建站定制網站

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:[email protected]。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都定制網站網頁設計
主站蜘蛛池模板: 久久精品免观看国产成人 | 国产成人免费片在线观看 | 久久在线免费观看 | 手机看片国产免费久久网 | 久久久久久久99精品免费观看 | 久久aa毛片免费播放嗯啊 | 热re66久久精品国产99热 | 精品国产香蕉在线播出 | 天天澡天天碰天天狠伊人五月 | 草草影院ccyy | 国产男女爽爽爽免费视频 | 久草中文在线视频 | 在线成人天天鲁夜啪视频 | 亚洲成人免费在线 | 第一色网站 | 国产精品亚洲第五区在线 | 成人做爰视频www视频 | 亚洲韩国欧美一区二区三区 | 夜夜爽影院| 久久99精品这里精品3 | 久久精品中文字幕免费 | 91高清国产经典在线观看 | 亚洲美女视频一区二区三区 | 婷婷亚洲久悠悠色在线播放 | 国产精品手机在线亚洲 | 亚洲欧美在线观看 | 国产va免费精品高清在线观看 | 男女乱淫免费视频 | 可以看毛片的网站 | 欧美啊啊啊 | 精品欧美一区二区在线观看欧美熟 | 欧美成人高清免费大片观看 | vr18成人资源 | a级午夜毛片免费一区二区 a级性生活视频 | 欧美一级大黄特黄毛片视频 | 欧美高清在线精品一区 | 一a一片一级一片啪啪 | 久热香蕉精品视频在线播放 | 国产杨幂福利在线视频观看 | 欧美日韩看看2015永久免费 | 成年人黄色免费网站 |