C C 位元組與記憶體問題

2021-07-05 14:13:02 字數 543 閱讀 1480

一直對討厭的記憶體限制一知半解,其實貌似並不難……

最簡單方法:用函式sizeof(資料型別)看結果。

比如sizeof(int)則輸出4,sizeof(double)則輸出8。

資料型別

佔位元組數

short

2int

4long

4long long

8unsigned short

2unsigned long

4unsigned long long

8float

4double

8long double

16bool

1char

1string

≈8+

陣列就是把基本資料型別相應地翻倍即可。

1mb=1024kb=1024*1024位元組

比如對於128mb=128*1024kb=131072kb=128*1024*1024位元組=134217728位元組

134217728/4=33554432所以開int陣列最大107

級別。

C C 記憶體位元組對齊詳解

from 例1 include stdafx.h include using namespace std struct a struct b 換乙個順序 int main 其輸出結果為 24 換行 16 不同樣結構體包含相同的元素型別,為什麼得到的長度不相同呢?這就 牽扯到 資料對齊 1.什麼是資料...

c c 的記憶體位元組對齊

先了解下c c 基本型別的位元組占用情況,pragma pack 規定的對齊長度,實際使用的規則是 也就是說,當 pragma pack的值等於或超過所有資料成員長度的時候,這個值的大小將不產生任何效果。再來看個例子 include using namespace std define offset...

C C 位元組對齊問題

位元組對齊的原因 為了提高 cpu 的儲存速度,編譯器會對 struct 和 union的儲存進行優化,即進行位元組對齊。對齊方式 對於 struct 或 union 中的 struct 或者 union 來說,它們的位元組對齊標準就是它的所有成員中位元組數最大的資料的位元組數。一般情況下 c c ...