[問題] pointer alignment

看板C_and_CPP (C/C++)作者 (kkdlin)時間16年前 (2009/04/03 22:13), 編輯推噓2(205)
留言7則, 3人參與, 最新討論串1/2 (看更多)
最近在看driver相關的書籍 看到alignment這邊 一直有個問題想不通 想請教一下各位 書裡面提到一般在將pointer做alignment的時候 是用下面的公式 [pointer + (page_size - 1)] & ~(page_size - 1) 後面的& 的動作可以理解 就是要把後面的位數清成0 變成page size的倍數 可是前面的加(page_size - 1)的動作一直想不懂? 直接將pointer & ~(page_size - 1)不是可以達到一樣的效果嗎? 想了很久的說..^^" Thanks in advance -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.32.231.73 ※ 編輯: kkdlin 來自: 114.32.231.73 (04/03 22:13)

04/03 22:26, , 1F
你在講的那個是.. 比如說,page 4K, 4.5K取4K, 8.7K取8K
04/03 22:26, 1F

04/03 22:27, , 2F
可是你說的那個公式是 4.5K取8K, 8.4K取12K
04/03 22:27, 2F

04/03 22:28, , 3F
當然,如果是恰4K的位數,那就會原本的值..
04/03 22:28, 3F

04/03 22:40, , 4F
的確 書上那個公式連4.1K都會變成8K
04/03 22:40, 4F

04/03 22:41, , 5F
所以說這個公式應該沒有所謂絕對的吧? 是這樣吧? thx
04/03 22:41, 5F

04/03 22:55, , 6F
要看用途來製作公式
04/03 22:55, 6F

04/03 22:59, , 7F
瞭解 感謝解說
04/03 22:59, 7F
文章代碼(AID): #19rXb_fC (C_and_CPP)
討論串 (同標題文章)
以下文章回應了本文
完整討論串 (本文為第 1 之 2 篇):
文章代碼(AID): #19rXb_fC (C_and_CPP)