为什么栈是向下增长的?
Windows内核
为什么栈是向下增长的?
sPhinX
2010-08-04, 10:13 上午
看了几天的书,这个地方有点想不通,一般觉得都是从低向高,从下向上这样的增长,当然从高往低理论也是可以的,只是有点别扭,但是为什么要选择这个比较别扭的方式,应该是有理由的吧。
看了一些资料,有些和我想的一样,就是说想下增长更容易出问题,更容易让问题尽早的出现,但是向上增长到栈溢出的时候不是一样要出问题吗?或者说如果上面没有其他程序分配的内存,就不容易出问题?
虽然是个小问题,但是没有彻底想通总觉得有个疙瘩,所以请教众高人,还请不吝赐教。
Re: 为什么栈是向下增长的?
格蠹老雷
2010-08-04, 23:13 下午
从编程方便的角度来考虑就是很自然的事。栈指针总是指向当前的栈顶,在栈上分配空间时,只需要把栈指针作减法
SP=SP-n
减了之后,栈指针指向新的栈顶,而且它的值恰好又是所分配空间的起点,可以方便的用SP的值索引刚分配的空间。
假设栈是反方向生长的,那么分配空间时要对SP作加法
SP=SP+n
要索引这个新分配的空间时,要SP-n才能指向新分配空间的起点...
一家之言,或许还有其它原因:-)
Re: 为什么栈是向下增长的?
sPhinX
2010-08-05, 16:29 下午
很有道理啊,不光是方便的问题,应该说是效率更高了吧,少了一个减法操作呢,是不是从一个侧面说明了那些设计操作系统的人在提高效率方面无所不用其极啊?呵呵
Re: 为什么栈是向下增长的?
lee0ne
2011-01-26, 08:59 上午
这个貌似跟cpu架构有关吧?跟操作系统没啥关系,操作系统还是得根据cpu架构来设计。。。