2022.02.21 UB
2022.02.21 UB
参考资料:
https://zhuanlan.zhihu.com/p/141467895
https://blog.csdn.net/ghscarecrow/article/details/115429174
Step 1 UB定义
在 C/C++ 中,和未定义行为容易混淆的概念有两个,实现定义行为,未指明行为。这里先对这几个概念做一个辨析。
实现定义行为:程序的行为随实现而变动,遵从标准的实现必须为每个这样的行为的效果提供文档。一个例子是
int在不同环境下的大小(标准规定为至少 16 位,现在大多数环境下均为 32 位)。未指明行为:程序的行为随实现而变动,而不要求遵从标准的实现为每个行为的效果提供文档。虽然行为在变动,但它产生的结果均应该是合法的。一个例子是变量分配的方式和位置(可以把一次定义的不同变量分配到一片连续的空间,当然也可以分开分配)。
未定义行为:对程序的行为无任何限制。前两类行为的结果都要求是合法的,而对于未定义行为,则不要求程序做任何合法,有意义的事情。一个例子是访问非法内存。
Step 2 常见产生UB的原因
2.1 越界访问
简而言之,数组越界等 神奇的问题。
2.2 变量没有初始化
如今天做的洛谷5546题,一直没有把 vis 数组初始化,导致二分写挂了。
2.3 有符号整数算数溢出
一些更为神奇的问题,总是忘,直接 #define int long long ,实在不行改成 unsigned long long ,怎么大怎么来,只要不MLE。
Step 3 解决对策
目前除了自己一行一行找,我还布吉岛windows怎么解决这个问题。
Step 4 后记
今天,可怜的eleveni整整把P5546写了三遍,写的都快心态炸裂了!!
2022.02.21 UB的更多相关文章
- 2022.02.21 SA
2022.02.21 SA 当我年少轻狂时,我曾拥有自由,但我并不明白它的意义.我曾拥有时间,但我没有意识到它的珍贵.我曾拥有爱,但我从未用心去体会.数十年的时间考验后,我终于理解了三者的真谛. 我已 ...
- 2022.02.20 SA
2022.02.20 SA 如果我还能看见明天黎明,如果我还能再爬起来,我仍会走我的路,哪怕这条路已经荒废许久,也许我们无法拥有感情,我们甚至无法像个正常人一样接受太阳的洗礼,但是我依然会执行我的条约 ...
- FFMpeg ver 20160219-git-98a0053 滤镜中英文对照 2016.02.21 by 1CM
FFMpeg ver 20160219-git-98a0053 滤镜中英文对照 2016.02.21 by 1CM T.. = Timeline support 支持时间轴 .S. = Slice t ...
- http://www.cnblogs.com/xwdreamer/archive/2012/02/21/2360818.html
http://www.cnblogs.com/xwdreamer/archive/2012/02/21/2360818.html
- ROS的安装-> rosdep init /update报错2022.02.24实测有效
ROS的安装-> rosdep init /update报错2022.02.24实测有效 一. 解决rosdep_init问题 正常执行sudo rosdep init会报错,如下: ERR ...
- 2022.02.27 CF811E Vladik and Entertaining Flags
2022.02.27 CF811E Vladik and Entertaining Flags https://www.luogu.com.cn/problem/CF811E Step 1 题意 在一 ...
- 2022.02.27 CF811E Vladik and Entertaining Flags(线段树+并查集)
2022.02.27 CF811E Vladik and Entertaining Flags(线段树+并查集) https://www.luogu.com.cn/problem/CF811E Ste ...
- [2017.02.21] 《Haskell趣学指南 —— Learning You a Haskell for Great Good!》
{- 2017.02.21 <Haskell趣学指南 -- Learning You a Haskell for Great Good!> [官网](http://learnyouahas ...
- Cocos2dx游戏源码合集(BY懒骨头+持续更新+2014.02.21)
转自:http://blog.csdn.net/iamlazybone/article/details/19612941 声明: <萝莉快跑><喵汪大战>两个demo的原作者b ...
随机推荐
- Redis安装、说明、Python中使用
Redis安装与简单使用 Redis说明 redis是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库 redis特点 Redis 支持数据的持久化,可以将内存中的数据保存在磁盘 ...
- First Note
第一篇博客 入驻博客园.
- springcloud学习02-对springcloud的理解的记录
以下都是基于这些资料整理的知识点 学习资料: https://windmt.com/2018/04/14/spring-cloud-0-microservices/ https://www.sprin ...
- markdown类型文件编辑大全
正文: 1.标题的几种写法: 第一种: 前面带#号,后面带文字,分别表示h1-h6,上图可以看出,只到h6,而且h1下面会有一条横线,注意,#号后面有空格 第二种: 这种方式好像只能 ...
- JavaScript day03 循环
循环 while循环 循环是重复性做一件事情 没有办法控制每次循环的时间长度 循环会增大程序时间复杂度(不建议无限循环嵌套 一般情况下不会嵌套超过两次) 死循环 是不会停止的循环 会导致电脑内存溢出 ...
- 大咖说|网易数帆论道 PolarDB 数据库开源 & 存储生态
开源技术如何商业化?将遇到什么问题?有哪些可行的解决办法?本期大咖说,阿里云数据库开源战役负责人曲山将携手网易副总裁汪源与你分享关于开源商业化的思考. 嘉宾简介 网易副总裁.杭州研究院执行院长.网易数 ...
- Java思考——HashSet集合如何保证元素的唯一性也就是不包含重复元素?
首先将源码逐级找出来1.HashSet<String> hs=new HashSet<String>(); hs.add("hello"); ...
- Rust极简教程
目录 简介 特性 特征 用途 安装 核心组件 常用命令 基础语法 数据类型 标量类型 复合类型 示例 条件语句 循环 输出&输入 输出 输出花括号 输出非基础类型 输入 所有权 切片 结构体 ...
- js正则表达式处理表单
1 <!doctype html> 2 <html lang="en"> 3 <head> 4 <meta charset="U ...
- (转)Linux的文件权限与目录配置
ref:https://www.cnblogs.com/ysocean/p/7712412.html#_label1_0 (转)Linux文件权限和目录配置 1.Linux命令的普遍语法格式 命令格式 ...