![]() |
#2
zklhp2012-06-10 20:48
|
我在学习栈的时候,感觉这个东西真是很奇怪- -
书上好像是这个意思:
空栈的栈底是很明显的,放东西进去的时候会覆盖栈中本来存在的内容。
但是我发现好像有一种上浮的机制,东西放进去造成当前栈顶前低8位的单元内容集体向低位浮动。
但是一直放也不会影响到初始栈顶前16位之前的内容。
一旦往栈中放入超过16位数据,就直接跳出DEBUG了。所以也没试出到底能不能影响上一行。
当栈顶前8位的前面都被覆盖了(就是放入4个字,8字节以后)在取出数据,就会是最左边的2个字节重复(此时正好是栈顶前的第8位占据了最左边),原先倍覆盖的数据也不会还原了。 假如此时 0-1是 10 0b 取出一个以后 2-3号位也成了10 0b 。
这个。我上面写的这些都是建立在初始栈顶是0结尾的时候
说了这么一大堆- -! 其实我想请教各位大神的是: 栈是如何控制栈的大小的呢。为啥我放入超过16个字节就跳出了。
栈 的覆盖机制到底是怎么样的呢? 书上并没有详细说,只是说会覆盖。但是我自己测试是覆盖栈顶向低位的第9-10位。而且最多只覆盖到初始栈顶位置向前16位 。超过16位就开始覆盖栈顶前8位以内的内容。
虽然我只是初学还没怎么用到栈 但是碰到这些问题就想了解一下。