結構體類型佔用的內存空間的計算方法:
首先需要確定是在32位系統,還算在64位系統
32系統4字節對齊時,如下分析:
每行4個字節,字符數據按照一個一個的存儲;short型數據按照2個字節2個字節的存儲;int和folat,以及long,double按照4個字節4個字節存儲
64位系統4字節對齊時,和32位系統一樣。
64位系統8字節對齊是,如下分析:
每行8個字節,字符數據按照一個一個的存儲;short型數據按照2個字節2個字節的存儲;int和float,按照4個字節4個字節的存儲,long和double型按照8個字節8個字節的存儲
只有結構體中有2個以上的數據時,才考慮對齊問題,如果只有一個,這個類型長度是多少,結構體長度就是多少
**只有在有2個以上成員時才需要對齊,對齊時按照最長類型對齊,但是也需要考慮系統的位數,如果是32位系統,最多4字節對齊,如果64位系統,按照最長類型的字節數對齊
*結構體和共用體指針的長度在32位系統上是4,在64位系統上是8
*如果是32位,最多32位,4字節對齊,
*如果是64位,最大對齊位數是結構體中最長的數據類型,不受64位系統長度的限制,比如可以按照long double 16位對齊