编译后内存的布局是否固定?怎么固定
编译后内存的布局是否固定?如何固定?
例如:
struct a
{
bool z;
float b;
float c;
}
那么在内存的布局是否还是按顺序呢?
如果不是的话,如何让它按顺序来编译呢?
------解决方案--------------------
我建议你这么弄下
先给结构体变量赋值
然后打印内存
#include <stdio.h>
struct a
{
bool z;
float b;
float c;
};
void main()
{
a v1;
v1.z = 1;
v1.b = 2.3;
v1.c = 5.7;
char *p = (char *)&v1;
for(int i=0; i< sizeof(a); i++)
{
printf("%02x\n",*(p++));
}
}
------解决方案--------------------
固定是什么意思?如果要有动态分配好像就不固定了吧。。
------解决方案--------------------
不懂楼主的需求,为什么要固定内存?你想把软件关了后还想打开恢复成关闭的样子?
------解决方案--------------------
我也没懂 给楼主放鞭炮
------解决方案--------------------
“内存编译后的偏移是否固定”
基本是 固定的,不过还 与 对齐方式 有关。
------解决方案--------------------
顺序应该是固定的,偏移就要看字节对齐方式了
------解决方案--------------------
偏移是固定的!
例如:
struct a
{
bool z;
float b;
float c;
}
那么在内存的布局是否还是按顺序呢?
如果不是的话,如何让它按顺序来编译呢?
内存布局
------解决方案--------------------
我建议你这么弄下
先给结构体变量赋值
然后打印内存
#include <stdio.h>
struct a
{
bool z;
float b;
float c;
};
void main()
{
a v1;
v1.z = 1;
v1.b = 2.3;
v1.c = 5.7;
char *p = (char *)&v1;
for(int i=0; i< sizeof(a); i++)
{
printf("%02x\n",*(p++));
}
}
------解决方案--------------------
固定是什么意思?如果要有动态分配好像就不固定了吧。。
------解决方案--------------------
不懂楼主的需求,为什么要固定内存?你想把软件关了后还想打开恢复成关闭的样子?
------解决方案--------------------
我也没懂 给楼主放鞭炮
------解决方案--------------------
“内存编译后的偏移是否固定”
基本是 固定的,不过还 与 对齐方式 有关。
------解决方案--------------------
顺序应该是固定的,偏移就要看字节对齐方式了
------解决方案--------------------
偏移是固定的!