c 中的記憶體對齊講解

2021-10-23 14:57:53 字數 1084 閱讀 4875

概念與原則:

對齊值:

結構體總記憶體大小

例項:1. 成員變數都是基礎資料型別

// 這裡的struct替換成class也一樣

struct s1

;struct s2

;s1 ss1;

s2 ss2;

cout <<

sizeof

(ss1)

<< endl;

// 12

cout <<

sizeof

(ss2)

<< endl;

// 8

例項2:成員變數中有陣列

// 1

class

bigdata

;class

data

;bigdata bd;

data da;

cout <<

sizeof

(bd)

<< endl;

// 33

cout <<

sizeof

(da)

<< endl;

// 48

// 2

struct aa

;classc;

c ccc;

aa sfa;

cout <<

sizeof

(sfa)

<< endl;

// 48

cout <<

sizeof

(ccc)

<< endl;

// 56

例項3:成員變數中有自定義型別

class

s11;

class

s22;

cout <<

sizeof

(s11)

<< endl;

// 12

cout <<

sizeof

(s22)

<< endl;

// 24

C 中的記憶體對齊

記憶體對齊 在我們的程式中,資料結構還有變數等等都需要占有記憶體,在很多系統中,它都要求記憶體分配的時候要對齊,這樣做的好處就是可以提高訪問記憶體的速度。我們還是先來看一段簡單的程式 程式一 1 include 2using namespace std 34 structx15 1011struct...

C 中的記憶體對齊

在我們的程式中,資料結構還有變數等等都需要占有記憶體,在很多系統中,它都要求記憶體分配的時候要對齊,這樣做的好處就是可以提高訪問記憶體的速度。我們還是先來看一段簡單的程式 程式一 1 include iostream 2using namespace std 34 structx15 1011str...

C 中的記憶體對齊

c 的一道題 include iostream include string using namespace std pragma pack 1 struct student stu struct s s void main stu 結構體對齊 最後的偏移位址25不是4的倍數,填充3個位元組後,滿足...