国产成人毛片视频|星空传媒久草视频|欧美激情草久视频|久久久久女女|久操超碰在线播放|亚洲强奸一区二区|五月天丁香社区在线|色婷婷成人丁香网|午夜欧美6666|纯肉无码91视频

c語言struct字節(jié)對齊 內存對齊的目的和規(guī)則?

內存對齊的目的和規(guī)則?有四種內存對齊原則:1)。數(shù)據(jù)成員對齊規(guī)則:結構(或聯(lián)合)的數(shù)據(jù)成員。第一個數(shù)據(jù)成員放置在偏移量為0的位置。之后,每個數(shù)據(jù)成員存儲的起始位置從該成員大小或其子成員大小的整數(shù)倍開始

內存對齊的目的和規(guī)則?

有四種內存對齊原則:

1)。數(shù)據(jù)成員對齊規(guī)則:結構(或聯(lián)合)的數(shù)據(jù)成員。第一個數(shù)據(jù)成員放置在偏移量為0的位置。之后,每個數(shù)據(jù)成員存儲的起始位置從該成員大小或其子成員大小的整數(shù)倍開始(只要該成員有子成員,如數(shù)組、結構等)(例如,在32位計算機中int為4字節(jié),則應從4的整數(shù)倍地址開始存儲)。基本類型不包括struct/class/Uinon。

2) . struct as member:如果一個結構中有一些結構成員,那么應該從結構中“最寬的基本類型成員”的整數(shù)倍地址存儲結構成員。(結構a包含結構B,而B包含char、int、double和其他元素,那么B應該從8的整數(shù)倍存儲。)。

3) . 收尾工作:結構的總尺寸,即sizeof的結果,必須是結構內部最大構件的“最寬基本型構件”的整數(shù)倍。彌補不足。(基本類型不包括struct/class/Uinon)。

4) . sizeof(Union),結構中最大的元素是Union的大小,因為在特定時間,只有Union的一個成員實際存儲在地址中。

C語言結構體與共用體的應用?

公共體:sizeof(Union data1)的值是16。默認情況下,公共正文的最大基本類型是double,它占用8個字節(jié),因此公共正文與8對齊。字符數(shù)組C2占用9字節(jié),因此整個公共體應該占用9字節(jié),但根據(jù)對齊原則,實際分配給它的內存是16字節(jié)。Struct:Struct數(shù)據(jù)與8字節(jié)對齊,long類型的成員1分配8字節(jié)。s、 I、C和a最初分別占用4、2、1和10字節(jié)??紤]到對齊方式,s分配4個字節(jié),I分配2個字節(jié),C分配2個字節(jié)。此時,8個字節(jié)剛剛用完。最初分配了10個字節(jié)??紤]到對齊,整個結構占用的存儲空間是8的倍數(shù),因此分配了16個字節(jié)。因此,結構數(shù)據(jù)占用84216=32字節(jié)。

學習c語言的時候指針應該怎么理解?

簡而言之,指針是表示地址的無符號整數(shù)。

所以僅僅理解指針是不夠的。您還需要知道指針指向的數(shù)據(jù)空間是如何排列的。這可能涉及到一些與特定CPU/OS相關的知識。如果我們能用計算機體系結構的知識來理解它,它會更深刻、更準確。

例如:

如何存儲float/double/long double?

如何在數(shù)據(jù)空間中組織陣列?

字符串是如何存儲的?

如何存儲結構和聯(lián)合體?

位域組織

具體CPU相關部分如下:

整數(shù)的存儲將涉及CPU大小的指定

浮點數(shù)的存儲直接關系到FPU的設計

此外,還有一些擴展知識,涉及內存的分配和釋放:如何在程序中分配內存?(malloc/free)

什么是堆和堆棧?

總而言之:指針是地址和整數(shù)。但要充分利用它,我們需要了解計算機存儲空間的分配。困難在這里,突破在這里。