首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C+寄存器优化

C++寄存器优化

在C++里面有个有趣的现象,先看代码

what? 什么,地址一样,打印结果不一样,不是应该一样的吗!!!

既然标题是 C++ 寄存器优化,那么就要从寄存器出发去考虑。

「当定义常量时」

我们就相当于和编译器约定好了,我们不会去修改 tmp 的值,这个时候编译器就会做一个优化,将 tmp 的值,放到寄存器里面,然后读取 tmp 时直接在寄存器里面读取,加快读取速度。

这个时候我们有去常属性 const_cast ,通过变量 q 修改 tmp 在内存中的值

在打印结果时,tmp 读取的是「寄存器」的值,p ,q读取的是「内存」的值

解决方案 volatile

上面这种优化肯定程序员所不愿意看到的,所以C++有一个关键字来解决这种不期望的优化问题,那就是 volatile ,英文翻译:「易变的; 无定性的」; 其实就是告诉编译器这个关键字修饰的变量不安全,你要到内存里面去操作,不要直接从寄存器取值。

这样就不会出现地址一样,数值不一样的情况了,也是我们希望看到的结果。

End

你们的在看就是对我最大的肯定,

点个在看好吗~

编程学习基地

常回基地看看

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20210301A01QOY00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券