关于实验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,,
个人见解。。不知道有没有讲错。。请指教。。 其实这个就是解释CPU分配内存单元的原则.
比如name段1个字节和15,或者16个字节CPU都会分配16个字节空间.
而定义17个字节,CPU就分配2*16个字节空间.到32字节为止都一样.
简单说,就是不满16照样给16.分配总是16个字节为一个单元分配.
应该没说错吧.我也是初学.
页:
[1]