首页 > 解决方案 > 如何在不使用 & 运算符的情况下将变量的物理地址直接传递给指针?

问题描述

我想要从 second_pointer 指向直接传递给它的地址,但是错误是 Segmentation fault (core dumped) 为什么?

 short i {} ;
  short* pointer { &i} ;
  LOG " address of variable : " << pointer ; 
  short* second_pointer = (short*) 0x7ffe8475245e ; 
  LOG " value pointed by second pointer : " << *second_pointer ; 

这是结果:

address of variable : 0x7fff56ab3756
value pointed by second pointer : Segmentation fault (core dumped)

标签: c++pointerssegmentation-faultmemory-addressampersand

解决方案


每次运行程序时,程序中或堆栈上的地址都可能通过地址空间布局随机化来随机化。因此,您在程序的一次运行中看到的地址在同一程序的第二次运行中可能无效。

不要硬编码 C 或 C++ 程序中变量的内存地址。不能保证它们是稳定的。&运算符是在 C 中获取对象地址的唯一安全方法。


推荐阅读