1. 程式人生 > >C中結構體的儲存分配

C中結構體的儲存分配

對於C語言中結構體所佔的儲存空間的大小,也一直是筆試面試的常客,今天好好看了一下這方面,以前一直以為很清楚了,今天通過各種實際測試舉例,發現原來還是沒有搞透徹,好在現在是徹底懂了,所以和大家分享,希望能有所幫助。提到結構體,相信大家都知道元素儲存要對齊,話是沒有錯,只是這個“對齊”裡面包含了很多微妙的東西。首先詳細的給出結構體記憶體分配的原則吧:編譯器按照成員列表順序一個接一個地給每個成員分配記憶體。只有當儲存成員時需要滿足正確的邊界對齊要求時,成員之間才可能出現用於填充的額外記憶體空間。接下來我們來慢慢理解這句話。sizeof操作符能夠得出一個結構的整體長度,包括因邊界對齊而跳過的那些位元組。所以一般都用sizeof來計算其所佔儲存空間。來看下面的例子: