文章的传送门: 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* fun(){
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相关推荐

  1. C语言中itoa系列函数及sprintf系列函数使用详解

    C语言中itoa系列函数及sprintf系列函数使用详解 itoa函数系列 该系列函数是广泛使用的非标准C语言和C++语言扩展功能,只能在windows编译器下使用,如果涉及到跨平台是不允许使用的,这 ...

  2. C程序中的未定义行为(Undefined Behavior)

    什么是UB LLVM IR和C语言中都有UB的概念.很多在C语言中看似合理的事都可能导致UB,UB是代码中很多BUG的源泉. UB在C或类C语言中存在的原因是因为追求极致的性能.类似JAVA之类的语言 ...

  3. c语言 地址+1,C语言中,为什么指针表达式的值+1.对应的地址值却+4?/为什么两个数组元素的地址相减之差不为地址之差?...

    在C语言中,我们常常用到的一个运算是让某个变量的值+1. 例如 M = M + 1. 而在实际运用中,我们发现 对于指针进行+1运算,算出来的结果是+4. 如下图 图中我们定义的 变量M 和指针Mat ...

  4. c语言中fflush_在C中使用fflush()

    c语言中fflush In this article, we'll take a look at how we can use the fflush() function in C. 在本文中,我们将 ...

  5. c语言中free函数_free()函数与C ++中的示例

    c语言中free函数 C ++ free()函数 (C++ free() function) free() function is a library function of cstdlib head ...

  6. c语言atan的作用,C语言中的atan和atan2

    在C语言的math.h或C++中的cmath中有两个求反正切的函数atan(double x)与atan2(double y,double x)  他们返回的值是弧度 要转化为角度再自己处理下. 前者 ...

  7. go语言中fmt包中Print、Printf、Println输出相关函数的区别

    go语言中fmt包中Print.Printf.Println输出相关函数的区别 区别: Print系列函数将内容输出到系统的标准输出.其区别:Print函数式直接输出内容,Printf函数支持格式化输 ...

  8. r语言中mpg数据_R语言数据筛选整理包dplyr

    dplyr软件包是R中功能最强大,最受欢迎的软件包之一.该软件包由最受欢迎的R程序员Hadley Wickham编写,他编写了许多有用的R软件包,如ggplot2,tidyr等.本文包括一些示例和如何 ...

  9. C语言中的static 详细分析

    google了近三页的关于C语言中static的内容,发现可用的信息很少,要么长篇大论不知所云要么在关键之处几个字略过,对于想挖掘底层原理的初学者来说参考性不是很大.所以,我这篇博文博采众家之长,把互 ...

最新文章

  1. B站讲演 | 我为什么要做科普视频?
  2. python类装饰器详解-python 中的装饰器详解
  3. spark streaming 5: InputDStream
  4. Codeforces Beta Round #19 D. Points
  5. python应用POP3、IMAP、SMTP 协议,获取邮箱验证码
  6. java数组设置结束_Java 数组最佳指南,快收藏让它吃灰
  7. 各平台安装Node.js
  8. string字符串的高级用法
  9. win2003 sp2 设置NLB
  10. 解决常见接口跨域问题
  11. Cocos2d-x 多分辨率适配完全解析
  12. mongodb 集群shard_MongoDB 分片集群环境搭建
  13. 浅谈Dubbo服务引入源码(@ReferenceBean依赖注入)
  14. 数据库面试题---原理
  15. linux 蓝牙驱动 chi,linux下的蓝牙驱动程序详解
  16. 第三方调用微信支付接口
  17. Html 5 、Android、iOS 全平台的斗地主游戏全程讲解
  18. 计算机与网络如何连接网络设置,电脑网络连接网络配置方法
  19. mongoose用模型更新不了,因为模型对象中默认带有_id会提示errmsg: “Performing an update on the path ‘_id‘ would modify the i
  20. CVP0.M24、CVP0.M28、CVZ0.S08插装式单向阀

热门文章

  1. python访问oracle_用Python操作Oracle
  2. 零基础入门语义分割-Task4 评价函数与损失函数
  3. java div2_系统学习 javaweb2----HTML语言2
  4. python语言中包含的标准数据类型有哪些_Python中的标准数据类型
  5. python pandas教程pdf_学习python中的pandas有没有好的教程推荐?
  6. python搭建网页_使用python快速搭建本地网站
  7. Windows 系统环境变量大全
  8. 比特币收购足球队,区块链准备登上绿茵场
  9. zabbix自定义监控Key值
  10. 将三个数按从大到小输出