指標對齊問題總結

2021-07-13 10:38:42 字數 513 閱讀 1836

1. 預設情況下char為1位元組對齊,short為2自己對齊,int為4位元組對齊

__packet為1位元組對齊,struct預設為最長型別對齊

所以當進行指標強轉時,如從char *p = ***; int *p1= p; 此時p1得到的結果可能是有問題的,因為p1需要4自己對齊!!!

所以大家做指標強制轉換時,一定要特別的小心!

2. struct a __packet

上面這個結構體,訪問struct a a; 使用a->c的位址時,不進行指標強轉,也不是對齊的,所以也可能造成問題!!!

所以操作__packet結構體,只能使用value的操作方法,或者使用__packet指標,或者使用 char(uint8_t)指標!!!

3. 結構體指標呢?

char val[2];

struct xx *p = &val[1];

這是p得到的位址正確嗎?

//以上為arm/mips系統的限制,x86下無這個限制!!!

2016.6.13

OpenCV原始碼之記憶體分配 指標對齊

原文 首先,為什麼要指標對齊 pointer alignment 指標對齊有時候非常重要,因為許多硬體相關的東西在對齊上存在限制。在有些系統中,某種資料型別只能儲存在偶數邊界的位址處。例如,在經典的 sparc架構 以及經典的arm 上,你不能從奇數字址讀取乙個超過1位元組的整型資料。嘗試這麼做將會...

位元組對齊問題總結

便於cpu快速訪問,減少cpu訪存的次數。對於不同硬體平台下 的移植尤為重要。位元組對齊的目標是 讓變數的起始位址符合某種 特性 比如在32位系統中int變數佔4個位元組,分配記憶體時,其起始位址應該位於4位元組的邊界上,即起始位址能夠被4整除。編譯器缺省會自動為變數對齊,在x86平台上,gcc缺省...

shell配置問題總結 針對zsh

1.拷貝 移動 刪除提示 alias cp cp i alias mv mv i alias rm rm i 2.動態庫載入路徑 export ld library path ld library path 3.無法支援萬用字元,如ls 某個路徑下的 原因來自網路 shell 不會按照遠端位址上的檔...