首页   注册   登录
 zhicheng 最近的时间轴更新

zhicheng

V2EX 第 14055 号会员,加入于 2011-11-28 13:16:44 +08:00
今日活跃度排名 4055
zhicheng 最近回复了
@wizardforcel 刚好相反,高级工程师根本就不会关心 UB 会产生什么样的行为,因为无论它产生什么样的行为,都是错的,哪怕程序看起来正确。

你知道 UB 会产生什么样的行为能避免被黑?程序能更安全?不,能让程序更安全的是从一开始就尽量避免引入 UB。

没有什么实现是完全正确的,但你明显不能往肯定错误的方向走啊。
@zmj1316 你说的那不是废话吗?用了 UB 基本上都是要出 Bug 的,大部分 Bug 也是由 UB 引起的,是我语文没学好,还是你逻辑没学好?还是知道 UB 会出现 Bug 是件很牛逼的事?
@zmj1316 工作这么多年,头一回听说用 Ub 的行为来 debug,你知道 ub 这是哪两个词的缩写?调试内存问题,你可以用 valgrind 可以用 addresssanitizer,能通过 ub 的行为来定位 bug ?我猜你是神。
因为你的代码本来就是错的,你在为错的代码强行找原因,你今天的 glibc 版本是这个行为,下一个可能是另一个行为,甚至不同的编译参数产生的行为也不一样。你要讨论 glibc 和 linux 就直接讨论,出个错的题目要“考”一下别人也是有趣。

如同法律上写了红灯不要过马路,你非要去讨论什么样的情况下红灯可以过马路,抱歉我理解不了这种行为。
我并没有争论,我只是在说你在误人子弟。
你的这个代码,不是什么底层,也不是什么知识,更不能在生产环境使用,除了那种要求指出错误的面试题,不应该用在任何地方。C 语言里明确表明了是未定义行为,就不要花时间去研究如果这样做了会是什么样的结果,因为它真的可以是任何行为,C 语言是一个标准并不是一个 C 实现。

初级工程师总觉得“了解”一点儿别人不知道的很厉害,殊不知这是高级工程师尽量避免的情况。

未定义行为的代码 == 错的代码
答案只有一个,未定义行为。
在未定义的前提下讨论代码行为没有任何意义。
32 天前
回复了 XinLake 创建的主题 全球工单系统 电子支付与现金支付
解决办法:不用中国移动。
虽然没有用临时变量,但是用了栈。
买三部电脑
关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   707 人在线   最高记录 3762   ·  
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.1 · 8ms · UTC 22:22 · PVG 06:22 · LAX 15:22 · JFK 18:22
♥ Do have faith in what you're doing.
沪ICP备16043287号-1