golang 提供了unsafe
包,讓我們能夠直接操作指定記憶體位址的記憶體。
通過unsafe.pointer()
函式,我們能夠獲取變數的記憶體位址表示,本質上這是個整數。可以將任意變數的位址轉換成 pointer 型別,也可以將 pointer 型別轉換成任意的指標型別,它是不同指標型別之間互轉的中間型別。
但pointer
不支援運算,如果要在記憶體位址上進行加減運算,需要將其轉為uintptr
型別。
上述**中:
總之:
野指標與非法記憶體操作
野指標 野指標通常是因為指標變數中儲存的值不是乙個合法的記憶體位址而造成的。1.在堆空間動態申請的 2.區域性變數所在的棧。野指標不是null指標,是指向不可用記憶體的指標,也可能是乙個動態的記憶體位址,但是這個記憶體別人正在使用,這也是不合法的位址。null指標不容易用錯,因為if語句很好判斷乙個...
野指標與非法記憶體操作
野指標通常是因為指標變數中儲存的值不是乙個合法的記憶體位址而造成的。1.在堆空間動態申請的 2.區域性變數所在的棧。野指標不是null指標,是指向不可用記憶體的指標,也可能是乙個動態的記憶體位址,但是這個記憶體別人正在使用,這也是不合法的位址。null指標不容易用錯,因為if語句很好判斷乙個指標是不...
指標與記憶體
char 乙個位元組 double 8個位元組 int 4個位元組 short 2 個位元組 fioat 4個位元組 將記憶體條抽象成乙個很大的一維字元陣列,對記憶體條中的每乙個位元組分配乙個32位或64位的編號 與32位或64位處理器相關 這個編號我們稱之為記憶體位址。定義乙個變數,用來儲存記憶體...