當前位置:
首頁 >
自对齐(self-aligned)
發布時間:2025/5/22
21
豆豆
生活随笔
收集整理的這篇文章主要介紹了
自对齐(self-aligned)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
C語言是自對齊的,32位以4字節對齊,64位以8字節對齊(1字節=8 bits)
自對齊的好處:在一條指令內完成數據的取或者存的操作,使得內存訪問更快;否則,如果一個變量跨機器字存儲,那么要做兩次或更多次的訪問(先取存在前一個機器字的內容,再取存在后一個機器字的內容)。
對齊要求:
- 字符可以起始于任何字節地址
- 2字節的short int必須起始于偶數地址
- 4字節的int或者float必須起始于被4整除的地址
- 8字節的long int或者double必須起始于被8整除的地址
- struct按照最寬成員進行指針對齊。如果struct中嵌套struct,外部struct要按照自己與內部struct中最寬的成員進行對齊。
內存中的實際存儲情況:
例1:代碼
char *p; char c; int x;內存中的存儲
char *p; //4 bytes(32位)或8 bytes(64位) char c; //1 byte char pad[3]; //3 bytes,無用空間,老派術語稱之為slop(水坑) int x; // 4 bytes?
消除水坑
可以通過改變變量聲明的位置擠掉水坑。
水坑發生于大數據類型的存儲區域緊跟在一個較小的數據類型的存儲區域之后。
消除水坑的方法是按對齊的降序來對變量進行聲明。
?
轉載于:https://www.cnblogs.com/qionglouyuyu/p/4969260.html
總結
以上是生活随笔為你收集整理的自对齐(self-aligned)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 分析和解析PHP代码的7大工具
- 下一篇: 毛戈平护肤品高端吗?普通上班族能不能买?