网页
资讯
视频
图片
知道
文库
贴吧
地图
采购
进入贴吧
全吧搜索
吧内搜索
搜贴
搜人
进吧
搜标签
日
一
二
三
四
五
六
签到排名:今日本吧第
个签到,
本吧因你更精彩,明天继续来努力!
本吧签到人数:0
一键签到
成为超级会员,使用一键签到
一键签到
本月漏签
0
次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行
补签
。
连续签到:
天 累计签到:
天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
04月13日
漏签
0
天
c++吧
关注:
609,895
贴子:
2,109,757
看贴
图片
吧主推荐
游戏
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 的值其实没被修改,从而达到某种优化的目的呢?
义乌市迪丰网络科技
c++
-轻松修复电脑缺少DLL文件导致的软件不能使用 无法正常启动等系列问题,一键下载轻松解决电脑使用问题,限时极速下载,安全绿色!
2025-04-13 15:57
广告
立即查看
心之刃
->*
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 源于解引用(经由不适合类型的左值访问)。
M_P_C_King
<
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
所以说你是怎么惹上民科的
登录百度账号
扫二维码下载贴吧客户端
下载贴吧APP
看高清直播、视频!
贴吧页面意见反馈
违规贴吧举报反馈通道
贴吧违规信息处理公示