好久没看C和底层,好多东西都给忘了。今天突然遇到一个关于内存变量分配的题目,感觉心里有点不踏实于是就查了查资料,整理了一些东西出来。
1.大端机器上的变量,其高字节放在所占空间的低地址处;小端机器上的变量,其高字节就放在所占空间的高地址处。
2.两种模式机器的内存排布差异,只和字节序有关而和位序列没有关系
3.不论是大端机器还是小端机器,变量的地址(逻辑地址)都是该变量所占用空间的低地址
4.内存管理中栈空间是向下增长(地址递减),堆空间向上增长(地址增加)。汇编语言中执行PUSH(压栈)操作时,SP(堆栈指针寄存器)的值自减2.
5.C语言中,局部变量开辟在栈中,故而首先声明的变量为高地址,后声明的变量为低地址。不过,当有结构体变量或数组被声明时,其(数组或结构体的)内部成员是按序从低地址向高地址排布的。
没有贴出具体的例子还望谅解,网上有不少网友提供极好的例子,可以有针对的查询参考。
暂时就整理出这么多,如不完整或有错误,还望指出,谢谢。