问题:
1. 因为在目前的可执行代码结构中,堆栈总是由高地址向低地址生长,那么如果我定义一个临时变量a,它的地址是它所处块的高地址呢还是低地址?
2. 定义一个指针p指向a,如果p 加 1,p指向的地址是增加还是减少呢?
出现这两个问题的本质原因是因为堆栈的向下生长,令人产生了混淆。
根据测试:
1. 不论是在堆中申请变量还是在栈中申请变量,它的地址总是由该变量所处的低地址决定;
2. 问题2中的指针p加1,指向的地址会增加。
3. 这时再搀和大小端问题。我们假定机器为小端机。因为我们画堆栈时总是将高地址画在上端,然后将该变量在内存中的数据按照字节画在堆栈中;我们在观察一个变量的值的时候,却又往往以为上面是低地址,于是发现怎么变成大端了,这样就产生了一系列的混淆;其本质上还是小端,只是我们画堆栈的方式和理解数据存放的地址顺序的方式产生了一些颠倒而已。