C語言結構體的儲存分配

2021-08-25 11:02:25 字數 674 閱讀 4413

若結構體裡面包含多種資料型別,其如何在記憶體中分配儲存空間呢?

編譯器在處理結構體空間分配時,採取的是對齊方式,按照結構體中成員中成員型別位元組數最大的為標準,從上往下對結構體成員進行賦值,若當前成員的位元組數小於最大成員位元組數,接著為下乙個連續分配記憶體,若下乙個的記憶體分配後會大於最大成員位元組數,則為當前成員補齊至最大成員位元組數。

#includetypedef struct node

pnode;

int main(int argc, char const *argv)

這裡的位元組數計算:最大位元組數為c變數,8位元組,接著分配時:

a :1        sum=1<8

b:    4        sum=1+4<8

c :    8        sum=5+8>8 ,補齊3個位元組後再為c分配,sum=5+(3)+8=16

d:     8(指標根據最大位元組數來分配)    sum=16+8=24

結果為24位元組。

改變下順序

#includetypedef struct node

pnode;

int main(int argc, char const *argv)

輸出位元組:1+(7)+8+4+(4)+8=32

C語言 結構體儲存空間分配

這兩天在看結構體,一直在琢磨結構體的儲存空間分配的問題,琢磨了半天總算明白了。和大家分享一下,希望能有所幫助。相信大家都知道結構體裡元素儲存要對齊吧,話雖是沒錯,只是這個 對齊 裡面包含了很多微妙的東西。首先詳細的給出結構體內存儲存空間分配的原則吧 編譯器按照成員列表順序乙個接乙個地給每個成員分配記...

C中結構體的儲存分配

對於c語言中結構體所佔的儲存空間的大小,也一直是筆試面試的常客,今天好好看了一下這方面,以前一直以為很清楚了,今天通過各種實際測試舉例,發現原來還是沒有搞透徹,好在現在是徹底懂了,所以和大家分享,希望能有所幫助。提到結構體,相信大家都知道 元素儲存要對齊 話是沒有錯,只是這個 對齊 裡面包含了很多微...

C中結構體的儲存分配

對於c語言中結構體所佔的儲存空間的大小,也一直是筆試面試的常客,今天好好看了一下這方面,以前一直以為很清楚了,今天通過各種實際測試舉例,發現原來還是沒有搞透徹,好在現在是徹底懂了,所以和大家分享,希望能有所幫助。提到結構體,相信大家都知道元素儲存要對齊,話是沒有錯,只是這個 對齊 裡面包含了很多微妙...