unsafe包的應用與位元組對齊

2021-09-12 21:52:21 字數 426 閱讀 1618

以乙個例子來說明:

package misc

type s struct

func main() 

fmt.println(unsafe.sizeof(*s))//16 因為位元組對齊的緣故不是13

fmt.println(unsafe.sizeof(s))//8 s是指標,在64位系統裡指標佔8個位元組,指標就是記憶體位址,大小跟系統有關跟語言無關

fmt.println(unsafe.alignof(s))//8 alignof返回該型別的對齊值,struct的對齊值是成員型別對齊值的最大值

}

此例子基於struct在記憶體中是連續的,並且知道s的結構。以上僅為記錄unsafe包的基本使用方式和位元組對齊是怎麼回事,以免忘了,非實際應用場景。

unsafe包的使用

1.var x string fmt.println unsafe.sizeof x 輸出16.因為string的底層結構為 type stringstruct struct 2.var s int fmt.println unsafe.sizeof s 輸出24.因為切片的底層結構為pointer...

位元組序與位元組對齊

一.網路位元組序與主機位元組序 1.大端和小端儲存 大端 big endian 高位存低位址。符合人類的正常思維。網路位元組序採用大端 網路傳輸的是位元組流 小端 littile endian 低位存低位址。如果將乙個32位的整數0x12345678存放到乙個整型變數 int 中,這個整型變數採用大...

位元組對齊與sizeof

本文主要包括二個部分,第一部分重點介紹在vc中,怎麼樣採用sizeof來求結構的大小,以及容易出現的問題,並給出解決問題的方法,第二部分總結出vc中sizeof的主要用法。1 sizeof應用在結構上的情況 請看下面的結構 struct mystruct 對結構mystruct採用sizeof會出現...