日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

sizeof之字节对齐

發布時間:2025/4/16 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sizeof之字节对齐 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  想用結構體來存儲一些數據(Objective-c環境下),結構體如下:

typedef struct {char itemName;char imageNameSel;char imageNameDis;BOOL isSelOrDis; } StructTest1;

  那如果itemName是NSString類型的,結構體如下:

1 typedef struct { 2 __unsafe_unretained NSString * itemName; 3 __unsafe_unretained NSString * imageNameSel; 4 __unsafe_unretained NSString * imageNameDis; 5 BOOL isSelOrDis; 6 } StructTest2;

  之后,我想把幾個結構體對象放入一個NSArray里的時候,想知道他們分別占用的內存空間多大。

  經過驗證,sizeof(StructTest1)等于4,sizeof(StructTest2)等于32,單獨理解起來都不是很難,char 類型占1位,BOOL占一位,NSString占8位??蓅izeof(StructTest2)等于32,Why?沒錯,BOOL也占了8位,可在StructTest1結構體中只占了1位,這里就涉及到了一個概念,字節對齊。

  百科里是這樣解釋的:

  為什么需要字節對齊計算機組成原理教導我們這樣有助于加快計算機的取數速度,否則就得多花指令周期了。為此,編譯器默認會對結構體進行處理(實際上其它地方的數據變量也是如此),讓寬度為2的基本數據類型(short等)都位于能被2整除的地址上,讓寬度為4的基本數據類型(int等)都位于能被4整除的地址上,以此類推。這樣,兩個數中間就可能需要加入填充字節,所以整個結構體的sizeof值就增長了。

  暫時理解了這么多,以后有新的認識了再補充。

  以上。

轉載于:https://www.cnblogs.com/zpz501/p/5279222.html

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的sizeof之字节对齐的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。