C语言中的undefined behavior系列(2)-- lifetime of object
文章的传送门: C语言中的undefined behavior/unspecified behavior - 序
嗷嗷的话: 本文里只要是大段大段的英文,都来至C99标准。所有的中文注释都是我对标准的理解。在文中使用的编译器是开了C99支持Intel C Compiler 11 for Windows.
— An object is referred tooutside of its lifetime (6.2.4).
— The value of a pointer to anobject whose lifetime has ended is used (6.2.4).
— The value of an object withautomatic storage duration is used while it is indeterminate (6.2.4, 6.7.8,6.8).
这三种undefined behavior是相当常见的问题。例如:
char p[] = "Is OK";
return p; //returning address of local variable or temporary
}
void func(){
int *p = NULL;
{
int k;
k = 1;
p = &k;
}
*p = 10; //refer to an object whose lifetime has ended
}
void fun1()
{
int i;
if (i == 0) // uninitialized local variable 'i' used
{
}
}
转载于:https://www.cnblogs.com/aoaoblogs/archive/2010/08/31/1813812.html
C语言中的undefined behavior系列(2)-- lifetime of object相关推荐
- C语言中itoa系列函数及sprintf系列函数使用详解
C语言中itoa系列函数及sprintf系列函数使用详解 itoa函数系列 该系列函数是广泛使用的非标准C语言和C++语言扩展功能,只能在windows编译器下使用,如果涉及到跨平台是不允许使用的,这 ...
- C程序中的未定义行为(Undefined Behavior)
什么是UB LLVM IR和C语言中都有UB的概念.很多在C语言中看似合理的事都可能导致UB,UB是代码中很多BUG的源泉. UB在C或类C语言中存在的原因是因为追求极致的性能.类似JAVA之类的语言 ...
- c语言 地址+1,C语言中,为什么指针表达式的值+1.对应的地址值却+4?/为什么两个数组元素的地址相减之差不为地址之差?...
在C语言中,我们常常用到的一个运算是让某个变量的值+1. 例如 M = M + 1. 而在实际运用中,我们发现 对于指针进行+1运算,算出来的结果是+4. 如下图 图中我们定义的 变量M 和指针Mat ...
- c语言中fflush_在C中使用fflush()
c语言中fflush In this article, we'll take a look at how we can use the fflush() function in C. 在本文中,我们将 ...
- c语言中free函数_free()函数与C ++中的示例
c语言中free函数 C ++ free()函数 (C++ free() function) free() function is a library function of cstdlib head ...
- c语言atan的作用,C语言中的atan和atan2
在C语言的math.h或C++中的cmath中有两个求反正切的函数atan(double x)与atan2(double y,double x) 他们返回的值是弧度 要转化为角度再自己处理下. 前者 ...
- go语言中fmt包中Print、Printf、Println输出相关函数的区别
go语言中fmt包中Print.Printf.Println输出相关函数的区别 区别: Print系列函数将内容输出到系统的标准输出.其区别:Print函数式直接输出内容,Printf函数支持格式化输 ...
- r语言中mpg数据_R语言数据筛选整理包dplyr
dplyr软件包是R中功能最强大,最受欢迎的软件包之一.该软件包由最受欢迎的R程序员Hadley Wickham编写,他编写了许多有用的R软件包,如ggplot2,tidyr等.本文包括一些示例和如何 ...
- C语言中的static 详细分析
google了近三页的关于C语言中static的内容,发现可用的信息很少,要么长篇大论不知所云要么在关键之处几个字略过,对于想挖掘底层原理的初学者来说参考性不是很大.所以,我这篇博文博采众家之长,把互 ...
最新文章
- B站讲演 | 我为什么要做科普视频?
- python类装饰器详解-python 中的装饰器详解
- spark streaming 5: InputDStream
- Codeforces Beta Round #19 D. Points
- python应用POP3、IMAP、SMTP 协议,获取邮箱验证码
- java数组设置结束_Java 数组最佳指南,快收藏让它吃灰
- 各平台安装Node.js
- string字符串的高级用法
- win2003 sp2 设置NLB
- 解决常见接口跨域问题
- Cocos2d-x 多分辨率适配完全解析
- mongodb 集群shard_MongoDB 分片集群环境搭建
- 浅谈Dubbo服务引入源码(@ReferenceBean依赖注入)
- 数据库面试题---原理
- linux 蓝牙驱动 chi,linux下的蓝牙驱动程序详解
- 第三方调用微信支付接口
- Html 5 、Android、iOS 全平台的斗地主游戏全程讲解
- 计算机与网络如何连接网络设置,电脑网络连接网络配置方法
- mongoose用模型更新不了,因为模型对象中默认带有_id会提示errmsg: “Performing an update on the path ‘_id‘ would modify the i
- CVP0.M24、CVP0.M28、CVZ0.S08插装式单向阀
热门文章
- python访问oracle_用Python操作Oracle
- 零基础入门语义分割-Task4 评价函数与损失函数
- java div2_系统学习 javaweb2----HTML语言2
- python语言中包含的标准数据类型有哪些_Python中的标准数据类型
- python pandas教程pdf_学习python中的pandas有没有好的教程推荐?
- python搭建网页_使用python快速搭建本地网站
- Windows 系统环境变量大全
- 比特币收购足球队,区块链准备登上绿茵场
- zabbix自定义监控Key值
- 将三个数按从大到小输出