void env_create(uint8_t *binary, enum EnvType type){
struct Env *env = NULL;
int r = env_alloc(&env, 0); // &env = 0xf0117fcc
cprintf("env addr: %x\n", &env); // &env = 0xf0117fbc
if(r != 0) panic("env_create:%e", r);
load_icode(env, binary); // &env = 0xf0117fcc
env->env_type = type;
}
当我使用gdb检查“ env”的地址时,它始终为0xf0117fcc,但是调用“ env_alloc”后的“ env”的正确值存储在0xf0117fbc中。我想知道是什么原因引起的?预先感谢。
答案 0 :(得分:2)
env是一个自动变量。在大多数(如果不是全部)C ++实现中,这是在堆栈上实现的。您只是获得了一个不同的堆栈位置。