变量的存储顺序
变量在定义后是如何在内存中存储的呢?是先定义的变量放在高地址还是放在低地址呢?
在结构体中先定义的变量是在低地址呢,还是高地址呢?
你又想过吗?
可以看到孤立变量都是先定义的在高位,后定义的在低位。
而对于结构体内变量是先定义的在低位,后定义的在高位。 这个值的思考,在针对那些需要指针和地址的应用里很重要 指针和地址存放的地址是不一样的 没有想过,但这是一个有趣和有意义的问题,感谢楼主的分享。那这个存储顺序是否跟编译器有关,如果是,是否在编译器中有可选的设置? 成员的对齐可能影响实际的内存布局。如果某个成员需要特定的对齐(如4字节或8字节对齐),编译器可能会插入填充字节,以确保每个成员的对齐要求得到满足。 变量存储顺序通常由编译器决定,全局 / 静态变量存数据段,局部变量存栈,动态分配存堆,按声明顺序或优化策略排列。 变量存储顺序由编译器、内存模型(如大 / 小端)、变量类型及优化等级决定,通常栈上从高到低,静态 / 全局按声明或编译器规则,无绝对统一顺序。
页:
[1]