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 ...
随机推荐
- ansible 四常用模块
常用模块 Ansible默认提供了很多模块来供我们使用.在Linux中,我们可以通过 ansible-doc -l 命令查看到当前Ansible支持哪些模块,通过 ansible-doc -s [模块 ...
- vue学习过程总结(08) - vue开发报错提示缺少本地文件的包
vue开发启动过程会报错某个src下自己写的包找不到为安装,原因有两个 1.import的from后面的路径不正确 2.如果开发中用到了scss是也会一直报这个错,这时候可能你没有安装scss加载器, ...
- 先知xss挑战赛学习笔记
xss游戏 游戏地址:http://ec2-13-58-146-2.us-east-2.compute.amazonaws.com/ LEMON参考wp地址 1. 文件上传 源码如下 <?php ...
- matplotlib字体
matplotlib官方文档 https://matplotlib.org/stable/gallery/index.html 使用以下代码查看 import matplotlib.pyplot as ...
- 记-Windows环境下Prometheus+alertmanager+windows_exporter+mtail监控部署
1.概述 最近因项目需要统计服务的负载情况及机器的负载情况,但是项目里面却没有相关统计而服务所在的机器也没有相关的监控,因为工期原因就选择了相对轻量级的prometheus方案.其中windows_e ...
- 修道士与野人问题(BFS广度搜索)
#include "iostream.h" #include "string.h" //定义一个状态节点 typedef struct //存储各个状态 { i ...
- 随意写文件命令?怎么向屏幕输出带空格的字符串,比如”hello world”?
写文件命令:vi 向屏幕输出带空格的字符串:echo hello world
- BeanFactory – BeanFactory 实现举例?
Bean 工厂是工厂模式的一个实现,提供了控制反转功能,用来把应用的配置和依赖从正真的应用代码中分离. 最常用的BeanFactory 实现是XmlBeanFactory 类.
- Springmvc入门基础(三) ---与mybatis框架整合
1.创建数据库springmvc及表items,且插入一些数据 DROP TABLE IF EXISTS `items`; CREATE TABLE `items` ( `id` int(11) NO ...
- RabbitMQ-learning
第一种模式=直连 P:生产者,也就是要发送消息的程序 C:消费者:消息的接受者,会一直等待消息到来. queue:消息队列,图中红色部分.类似一个邮箱,可以缓存消息:生产者向其中投递消息,消费者从其中 ...