
遇到一个很古怪的问题: 例子:
{ ... //一些其他代码 int apple = 1; //Addr: a int* apple_ptr = &apple ; //Addr: 预计=a-8,实际=a-12 int** apple_ptr_ptr = &apple_ptr; //Addr: 预计=a-16,实际=a-24 } 所以地址实际和预期之间的差距一般是什么原因造成的呢?
1 FujiZ 2020-04-05 17:25:15 +08:00 via Android 需要考虑 padding |
2 Mohanson 2020-04-05 17:31:03 +08:00 via Android 内存对齐的缘故?把 apple 改成 usize64 应该能得到你想要的结果,猜的 |
3 lance6716 2020-04-05 17:34:57 +08:00 via Android gdb 看看不就不用猜了吗 |
4 unixeno 2020-04-05 19:18:25 +08:00 via Android 这个完全是编译器实现的行为 你用不同的优化等级编译出来的结果可能都不同 |
5 msg7086 2020-04-05 19:32:35 +08:00 via Android 为啥能预计? 内存变量分配也不是写在规范里的呀。 对齐,插调试信息,优化,都可能造成变量不相邻。 |
6 tairan2006 2020-04-05 19:33:35 +08:00 1 这里完全无法预期啊 |