chao_prince 发表于 2011-3-5 20:38:19

关于实验5,(2)题第4小问,,鱼哥的解答不完整。。

对于如下定义的段:
name segment
...
name ends
如果段中的数据占N个字节,则程序加载后, 该段实际占有的空间为____。

小甲鱼老师视频中讲的答案是,,( N / 16 + 1) * 16..
但是如果段中的字节数是16,32,,,等16的倍数呢。。岂不是16个字节要用( 16 / 16 + 1) * 16 = 32个字节。。

所以我觉得应该分为N能被16整除和不能被16整除的情况..
1,当N能被16整除时:占有的空间是( N / 16) * 16..
2,当N不能被16整除时:占有的空间才是( N / 16 + 1 ) * 16..
综合上面两个情况,,通式应该是 ( ( N + 15 ) / 16 ) * 16,,

个人见解。。不知道有没有讲错。。请指教。。

木吉他 发表于 2011-3-5 22:18:29

其实这个就是解释CPU分配内存单元的原则.
比如name段1个字节和15,或者16个字节CPU都会分配16个字节空间.
而定义17个字节,CPU就分配2*16个字节空间.到32字节为止都一样.

简单说,就是不满16照样给16.分配总是16个字节为一个单元分配.
应该没说错吧.我也是初学.
页: [1]
查看完整版本: 关于实验5,(2)题第4小问,,鱼哥的解答不完整。。