EE_DSnP 板


LINE

看了這篇我也想了一個小時... 但我自己的理解是這樣... 非常沒有把握 說不定會誤導大家XDDD 還是請老師出面說明比較好... :※ 引述《vincere (vin)》之銘言: :因為想了一個晚上 :雖然有聽老師講過、爬過文 :但感覺還是沒有完全地了解 :不太敢隨便下手 :所以想要請教大家一下 :我知道要取sizeof(size_t)之倍數記憶體的原因 :是為了做到platform dependent :因為系統在new的時後 :會對齊size_t為倍數的位置 之所以一次給size_t的倍數大小記憶體 應該是因為作業系統匯流排一次傳輸的bits數就是這麼大 32位元一次讀32 bits(4 bytes) 64位元一次讀64 bits(8 bytes) :但在作業中 :我們先自己跟系統要一塊memory :來後再根據new多少再來分配記憶體 :但這裡我不是很清楚的是 :為何對自己要到的記憶體 :不能依照真正object大小來要 :而是也要跟系統一樣要sizeof(size_t)為倍數的記憶體大小呢? :舉例說: :一開始可能將0x00000000~0x00000007位置的記憶體分配出去 :然後下次再從0x00000008開始開始 :原因是因為 :就算是我們自己已經要來的MemBlock, :也無法aceess/或是指到非sizeof(size_t)倍數的記憶體? 我認為pointer應該是bytewise的耶 所以可以acess到非size_t倍數大小位址的記憶體 以64-bit系統來說 就只是把包含你要acess的位址部分的memory一次讀出來 例如0x00000006就是讀出0x00000000~0x00000007然後acess第7個byte之後的東西 :還是說只是單純要模仿機器每次都切齊sizeof(size_t)倍數的記憶體位置呢? 所以我認為我們是在模仿機器每次給記憶體的方式(4 byte倍數 or 8 byte倍數) 目的是為了讓我們在自己管理的memory情況下 pointer也能像平常一般下使用不出錯 譬如說 在64-bit系統下 假設今天有一個class A實際大小是39 bytes 如果我們不模仿系統存記憶體會以倍數存且留空位的話 今天假設宣告A* ptr = new A [2]; 若計算兩個物件A占用的記憶體大小 系統總共用了80 bytes存放 而我們用了78 bytes存放(依此類推...) 則 如果要以*(ptr + 1)來acess ptr[1] 後者就會出錯! :或是另有其它隱情? :不好意思小的觀念不清 :懇請解惑 :感激不盡 --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.25.106 ※ 編輯: vincere 來自: 140.112.25.106 (11/18 14:13)
1F:推 simpdanny:因為new[n]的時候 系統會要求對齊後bytes*n+SIZE_T 11/18 15:37
2F:→ simpdanny:所以中間一定會有一些零碎bytes是系統會空掉的 11/18 15:38
3F:→ vincere:所以意思是說 假如我在new的過程中 想要拿memory block中 11/18 16:18
4F:→ vincere:*(_ptr+5)所相對的記憶體時沒辦法的?而是它會要求對應的 11/18 16:20
所以依我的想法來說 *(_ptr + 5)當然可以acess到位址真的是_ptr + 5的記憶體內容...
5F:→ vincere:*(ptr+8)開始的位置?如果我強制assign給它程式是否會 11/18 16:22
6F:→ vincere:crash掉?如果想錯懇請糾正 11/18 16:22
7F:推 simpdanny:應該是沒辦法 因為new operator會自動用他的! 11/18 17:19
8F:→ vincere:感激:) 似乎比較瞭解了 11/18 17:32
--



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.252.206 ※ 編輯: kickpp 來自: 140.112.252.206 (11/19 01:13)
9F:推 vincere:非常感謝你:))) 11/19 06:41







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:BabyMother站內搜尋

TOP