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灯, 水草

请输入看板名称,例如:Gossiping站内搜寻

TOP