C/C++未定义行为的例子汇总

简介: C/C++未定义行为的例子汇总

一、什么是未定义行为?

       未定义行为(Undefined Behavior)是指C语言标准未做规定的行为。同时,标准也从没要求编译器判断未定义行为,所以这些行为有编译器自行处理,在不同的编译器可能会产生不同的结果,又或者如果程序调用未定义的行为,可能会成功编译,甚至一开始运行时没有错误,只会在另一个系统上,甚至是在另一个日期运行失败。当一个未定义行为的实例发生时,正如语言标准所说,“什么事情都可能发生”,也许什么都没有发生。

       一句话,未定义行为就是运行结果不确定,可能运行成功,可能失败,可能结果不同

二、未定义行为的例子

大家只要正确的写代码就行,别搞这些未定义的行为。

1. 指针的未定义行为:

解引用空指针
解引用没被初始化的指针(野指针)
使用指向生命周期已结束的对象的指针
指针的越界访问

2. 其他未定义行为

有符号的整数的算数溢出
数组越界访问
访问未初始化的变量
对字符串常量进行修改
对于有返回值的函数,不返回返回值
变量同时是左值和右操作数
输出语句中的无顺序打印(这里特指此类printf( "%d %d" ,++i , --i );
C++中的new / delete,new [ ] / delete [ ],malloc / free 没有配对使用 

参考博客:洛谷日报:关于 C++ 未定义行为的一些事 - 知乎


相关文章
|
7月前
|
移动开发 监控 数据可视化
通过C++实现对管理员工上网行为的数据挖掘与可视化
这篇文章介绍了如何使用C++进行员工上网行为的监控数据挖掘与可视化。首先,通过读取系统日志收集上网数据,然后进行数据分析,包括统计访问频率和识别异常行为。接着,利用数据可视化工具展示结果。最后,讨论了如何将监控数据自动提交到网站,以实现实时监控和问题响应。示例代码展示了使用Boost.Asio库创建HTTP客户端上传数据的基本过程。
159 2
|
7月前
|
安全 编译器 程序员
【C++ 修饰符关键字 explicit 】掌握C++中的explicit :构造函数行为和初始化综合指南
【C++ 修饰符关键字 explicit 】掌握C++中的explicit :构造函数行为和初始化综合指南
500 3
|
7月前
|
存储 缓存 算法
高效编程:我们应该了解哪些编译器优化技术?如何做出成熟的优化行为,掌握C++编程中的编译器优化艺术。
高效编程:我们应该了解哪些编译器优化技术?如何做出成熟的优化行为,掌握C++编程中的编译器优化艺术。
448 5
|
4月前
|
安全 网络安全 数据安全/隐私保护
探索企业上网行为管理软件:C++ 的视角
在数字化企业环境中,上网行为管理软件至关重要,它不仅保障信息安全还优化网络资源分配。C++以高效和强大性能为基础,支持这类软件的开发。通过示例代码展示了如何使用C++捕获网络数据包、控制特定网址访问及分析网络流量模式,展现了C++在处理大规模网络数据方面的优势,满足企业对网络安全与管理的需求。
43 1
|
7月前
|
算法 安全 大数据
【C/C++ 随机函数行为】深入探索C++中的随机数:std::random_device与rand的行为分析(二)
【C/C++ 随机函数行为】深入探索C++中的随机数:std::random_device与rand的行为分析
208 0
|
5月前
|
运维 NoSQL Redis
c++开发redis module问题之module根据Redis的角色采取不同的行为,如何解决
c++开发redis module问题之module根据Redis的角色采取不同的行为,如何解决
|
6月前
|
数据安全/隐私保护 C++
C++ 中的类是一种用户定义的数据类型,用于表示具有相似特征和行为的对象的模板。
C++ 中的类是一种用户定义的数据类型,用于表示具有相似特征和行为的对象的模板。
|
7月前
|
编译器 C++
C++:编译器对被const修饰变量的处理行为(替换)
C++:编译器对被const修饰变量的处理行为(替换)
51 0
|
7月前
|
算法 安全 数据安全/隐私保护
【C/C++ 随机函数行为】深入探索C++中的随机数:std::random_device与rand的行为分析(一)
【C/C++ 随机函数行为】深入探索C++中的随机数:std::random_device与rand的行为分析
526 0
|
7月前
|
存储 算法 编译器
【C++ 模板应用】模板哪些行为属于多态哪些行为属于泛型编程?
【C++ 模板应用】模板哪些行为属于多态哪些行为属于泛型编程?
56 0