測試8位元組對齊

2021-06-19 18:56:28 字數 636 閱讀 2853

對十六進製制和按位操作,總是糊塗,所以實際測試下:

我的理解,不一定全部正確:

32位的系統上,(都以32位系統為例)

乙個int型是4個位元組,所以0x3是 0x0003,四個位元組,其中3代表乙個位元組(8個二進位制位)00000011,0就是00000000了。

乙個指標也是4個位元組,這個程式裡頭列印 的很多都是指標型別的值:

比如 [5d2f70]  ,是4個位元組的十六進製制數。

對0x03取反,得到的也是乙個十六進製制的數: [fffffffc]

malloc出來的位址,多次執行,最後乙個位元組,都是0,所以每次與,都還是0,buf與prealbuf一直都是相等的。

不太懂了 。。。。。

#include#includetypedef struct _ringbufferringbuffer;

void testalign8(ringbuffer **prb,int capacity)

{ ringbuffer *rb;

rb=malloc(sizeof(ringbuffer));

if(rb==null)

{printf("not enough memory\n

位元組對齊 8位元組對齊

參考博文 參考1 參考2 參考3 在記憶體管理中經常使用位元組對齊來管理分配的記憶體。1 原理 2 演算法 2.1unsigned intcalc align unsigned int n,unsigned align 2.2 更好的演算法 unsigned intcalc align unsign...

8位位元組對齊演算法

參考文章 8bit對齊演算法 void testalign 1byte 1位元組對齊 unsigned int align8bit unsigned int n 2byte 2位元組對齊 unsigned int align16bit unsigned int n 4byte 4位元組對齊 unsi...

詳解4位元組對齊

摘要 編譯器通常採用的預設位元組對齊規則 對於型別t,在n bit系統中,保證變數首位址在min sizeof t n 8 位元組位置上,以保證最少讀週期。以下為原文 其實我也是一條分割線 所謂的位元組對齊,就是各種型別的資料按照一定的規則在空間上排列,而不是順序的乙個接乙個的排放,這個就是對齊。我...