c++ - 如何在不使用 & 运算符的情况下将变量的物理地址直接传递给指针?
问题描述
我想要从 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 或 C++ 程序中变量的内存地址。不能保证它们是稳定的。&
运算符是在 C 中获取对象地址的唯一安全方法。
推荐阅读
- mysql - 我用django和mysql,但是用DateTimeField的时候时间不对
- angular - 为特定日期添加背景颜色
- ios - 根据尺寸显示图像的最佳方式
- php - 谷歌分析 API 按会话获取单个访问者的数据
- arduino - 在 FreeRTOS 中使用信号量
- maven - 问:我可以从 Maven 插件触发 Jenkins 作业吗?
- android - Facebook auth with firebase 获取用户数据
- python - 计算字符串列之间的相关性
- xamarin - Plugin.Media 的 CompressionQuality 在 iOS 上不起作用
- ios - 外置硬盘上的 Cocoapods