經典面試題 之 大小端 記憶體對齊補齊

2021-07-04 09:15:05 字數 1045 閱讀 6881

#includestruct s

x; char c[10];

};};int main()

x;  記憶體對齊大小為8個位元組

union

x;char c[10];

};8個位元組x, char佔10個位元組又按4個位元組對齊, 則為12, 若將int改為long or double or longlong則按8位元組對齊結果為16 

2、大端、小端模式

這邊以小端

s.x.a

= 64;    取值為0x40 由於四個位元組補齊 -》 0x00000040

s.x.b   = (5<<24) | (4<<16) | (3<<8) | (2);   取值為0x05040302

假設記憶體 儲存方式  按照小端的存放 高的記憶體資料放在低的記憶體位址上

0x4000  0x4001   0x4002   0x4003 

0x40    0x00      0x00     0x00

0x4004  0x4005   0x4006   0x4007 

0x02    0x03      0x04     0x05

0x4008  0x4009   0x4010   0x4011

0x00    0x00      0x00     0x00

3、strlen, sizeof

strlen 遇到\0 結束, 那麼遇到00 也結束 。

sizeof 實際記憶體大小。

4、%x 十六進製制輸出

最終小端的答案:

0 : 0x40

1 : 0x0

2 : 0x0

3 : 0x0

4 : 0x2

5 : 0x3

6 : 0x4

7 : 0x5

8 : 0x0

9 : 0x0

10 : 0x0

11 : 0x0

1

#includeint main()

關於記憶體對齊的面試題

鄭重宣告 本文是筆者根據個人理解所寫,錯誤難免,歡迎拍磚!請說出如下2種方式,哪種更好,為什麼?方式一 void foo int a,float b,char ch,double d,float f 方式二 structa void foo a pa 咋一看,不知道這題想要考什麼,無從下手。其實該題...

關於記憶體對齊的面試題

鄭重宣告 本文是筆者根據個人理解所寫,錯誤難免,歡迎拍磚!請說出如下2種方式,哪種更好,為什麼?方式一 void foo int a,float b,char ch,double d,float f 方式二 structa void foo a pa 咋一看,不知道這題想要考什麼,無從下手。其實該題...

iOS經典面試題總結 記憶體管理

1.什麼是arc?arc是automatic reference counting自動引用計數,在程式編譯時自動加入retain release。在物件被建立時retain count 1,在物件被release時count 1,當count 0時,銷毀物件。程式中加入autoreleasepool...