请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

内存对齐

老师好,有一点不理解为了对齐2M申请4M的肯定包含它,但为什么不申请3M,不一样能包含吗

正在回答

1回答

陈雷 2019-06-07 23:47:20

同学您好,3M是有可能没办法覆盖一个按2M对齐的2M的。 比如说,起始位置是2M+500k,3M的话,结束位置是5M+500k,这里面不包含一个2M对齐的2M大小的内存呢,见图片:https://img1.sycdn.imooc.com//szimg/5cfa870600014b2b15001500.jpg

0 回复 有任何疑惑可以回复我~
  • 提问者 qq_可可_0 #1
    原来是必须在每M的边界开始算,对吧?
    回复 有任何疑惑可以回复我~ 2019-06-08 01:01:36
  • 陈雷 回复 提问者 qq_可可_0 #2
    同学您好。 按2MB对齐的chunk(2MB),这里面有两个2MB。
    第一个意味着起始位置是2MB的整数倍;
    第二个意味着大小是2MB;
    
    类比一下十进制,我们想找按100对齐的100。
    那么是不是只有0~100,100~200,200~300,300~400…这种呢。
    假设我们随机取一个数,如果是99,那么我们如果想要100~200这个区间,是不是要从99取到299(99+100*2,类比4MB)呢,然后掐头去尾,掐头就是去掉99~100,去尾就是去掉200~299,最后得到的是100~200这个区间。如果这时候你取的是从99到245(99+150,类比3MB)肯定不行吧。
    
    祝您学习愉快!
    回复 有任何疑惑可以回复我~ 2019-06-08 06:05:50
  • 提问者 qq_可可_0 回复 陈雷 #3
    多谢陈老师!! 是我买过最好的一个课程
    回复 有任何疑惑可以回复我~ 2019-06-08 13:02:29
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信