您的位置:首页 > 其它

分配给任务的堆栈的栈顶指针_理解

2016-02-26 14:23 204 查看
我来说下我的理解吧,向上增长就是从低地址向高地址增长,数组元素的地址是递增的这个是肯定的,假设这个堆栈区的内存地址是从0~99,对应的数组的地址就是&Table[0]~&Table[99],其中&Table[0] = 地址0,&Table[1] = 地址1,以此类推,&Table[99] = 地址99,上面上说了堆栈的增长方式是向上增长,那么第一个压入栈的数据肯定存在&Table[0]这个里面,此时栈顶和栈底重合,随着你压入数据越来越多,直到压满整个堆栈区为止,压满数据后栈顶指针为&Table[99],也就是说栈顶和栈底相距“最远”,我猜你肯定看的是任哲的书,他说OSTaskCreate();这个函数的第三个参数是栈顶指针,其实他这句话说得容易引起误解,他应该在栈顶指针前面加个形容词“空栈时候的”,因为这个函数的第三个参数是空栈时候的栈顶指针,此时的栈顶指针和栈底指针是重合的,如果堆栈是向上增长,那么空栈时候的栈顶指针肯定指向&Table[0]呀;如果堆栈是向下增长,那么空栈时候的栈顶指针肯定指向&Table[99]呀,从指针&Table[99]开始压入数据,压一个数据之后地址减1,指向&Table[98],以此类推...   
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息