网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
07月26日漏签0天
c++吧 关注:625,938贴子:2,112,705
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 29回复贴,共1页
<<返回c++吧
>0< 加载中...

reinterpret_cast<sockaddr*>(&sin) 和 strict-aliasing rules

  • 只看楼主
  • 收藏

  • 回复
  • noelemahcz
  • <
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
标准 n4659 (§6.10) 规定:

那么对于类似下面 reinterpret_cast<sockaddr*>(&sin) 这种用法:

将指针强制转换为不符合上述标准规定的类型并传递给外部函数,是否属于未定义行为?还是说实际上取决于 bind 的实现?
如果属于 UB 的话,那么实际上由 bind 的实现保证正确性?毕竟这种操作很常见。。。


  • noelemahcz
  • <
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
问题描述的不是很清晰,换一种问法吧:
根据网上某些例子来看,如果 bind 通过这个 sockaddr 类型的指针修改了 sin 的值,那么编译器是否可以假定 sin 的值其实没被修改,从而达到某种优化的目的呢?


2025-07-26 07:51:56
广告
不感兴趣
开通SVIP免广告
  • 心之刃
  • ->*
    15
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
是的,目前是未定义行为。
不过提案p0593(http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2019/p0593r3.html)已经在着手解决这个问题了。


  • BlueWanderer
  • ==
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
我倒是一直好奇如果type punning之后只去读的话到底会不会造成什么实际问题。_(:з)∠)_
为啥就不能整个reinterpret_copy……


  • Con
  • <
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
不过ub怎么可以取决于实现,又不是impl-def


  • 幻の上帝
  • ->*
    15
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
没有UB,虽然designated Initializers就够不标准的了。
要是能跨过程干掉,一坨wchar_t的alias(注意在C中是某个整数类型的别名)之类的就够疯掉。


  • vb_freshman
  • throw
    3
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
还看不懂。


  • 神座流出
  • *
    14
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
指针随便转不会有 UB 。 UB 源于解引用(经由不适合类型的左值访问)。


2025-07-26 07:45:56
广告
不感兴趣
开通SVIP免广告
  • M_P_C_King
  • <
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
所以说你是怎么惹上民科的


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 29回复贴,共1页
<<返回c++吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示