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

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://m.2m8n56k.cn/article48/poochp.html

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

廣告

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

成都定制網站網頁設計
主站蜘蛛池模板: 亚洲国产夜色在线观看 | 毛片免费全部播放一级 | 欧美曰批人成在线观看 | 成年性午夜免费视频网站不卡 | 中文字幕精品在线 | 日韩欧美在线综合网高清 | 1024手机基地在线看手机 | 久久九九国产 | 亚洲第一在线播放 | 在线观看国产 | 中文字幕在线免费观看 | 免费观看毛片的网站 | 中文在线观看视频 | 国产精品专区第二 | 久久成人网18网站 | 欧美成人一区二区三区 | 免费人成年短视频在线观看免费网站 | www.午夜| 日韩午夜在线视频不卡片 | 日本加勒比在线 | 久久免费视频在线观看 | 亚洲成a人片 | 日本高清www片 | 狠狠色综合网站久久久久久久 | 亚洲天堂一区二区 | 国产精品免费看久久久香蕉 | 国内自拍第一页 | 精品午夜一区二区三区在线观看 | 色www永久免费网站国产 | 亚洲国产一 | 日韩免费高清一级毛片 | 泷泽萝拉亚洲精品中文字幕 | 亚洲一级毛片中文字幕 | 成 人 黄 色 视频 免费观看 | 亚洲精品成人网久久久久久 | 亚洲人的天堂男人爽爽爽 | 美女视频很黄很a免费国产 美女视频黄.免费网址 | 亚洲在线网址 | 国产精品一区伦免视频播放 | 久久亚洲精品国产精品777777 | 一个人看的免费高清视频日本 |