ISO/IEC 9899:2011 条款6.2.4——对象的存储持久性
6.2.4 对象的存储持久性
1、一个对象具有一个存储持久性来确定其生命周期。一共有四种存储持久性:静态的,线程的,自动的,以及分配的。分配存储在7.22.3中描述。
2、一个对象的生命周期是程序执行的一部分,在此期间该存储空间确保能为该对象进行保留。一个对象存在就有一个常量地址[注:常量地址意思是在可能不同时刻所构建的两个指针指向同一个对象,这两个指针的值是相等的。在同一个程序的两个不同执行期间,地址可能不同。也就是说,对于一个可执行程序,第一次运行获得的一个对象地址与第二次执行获得该对象的地址可能是不同的。],并保存其最后所存储的值,贯穿其生命周期。如果一个对象在其生命周期以外的地方被引用,那么行为是未定义的。当一个指针所指向的对象到达了其生命周期的末尾,那么该指针的值就变为不确定了。
3、其标识符没有被声明为存储类指示符_Thread_local的一个对象,并且具有外部或内部连接,或具有存储类指示符static,具有静态存储持久性。其生命周期为程序的整个执行并且其所存储的值在程序启动前(即进入main函数前)仅被初始化一次。
4、其标识符以存储类指示符_Thread_local所声明的一个对象具有线程存储持久性。其生命周期是创建该对象的线程的整个执行,并且它的值在线程启动时被初始化。每个线程都有这样一个独立的对象,并且在一个表达式中对所声明名字的使用引用的是计算该表达式的线程相关联的那个对象。企图间接从另一个线程来访问某个线程中的线程存储持久性的对象是实现定义的。
5、其标识符以不具有连接并且没有存储类指示符static所声明的一个对象具有自动存储持久性,包括某些复合字面量。企图间接从另一个线程而不是与该对象相关联的线程访问具有自动存储持久性的一个对象是由实现定义的。
6、对于诸如不具有一个可变长度数组类型的一个对象,其生命周期从它相关联的语句块的入口延展到该语句块的结束(以任意方式退出该语句块)。(进入另一个封闭的语句块或调用一个函数会延迟,但不会结束对当前语句块的执行。)如果语句块被递归进入,那么该对象的一个新实例每次都会被创建。该对象的初始值是不确定的。如果为该对象指定一次初始化,那么在每次对它的声明或复合字面量到达语句块的执行中时,初始化被执行;否则,该值在每次到达声明时变为不确定的。
7、对于一个不具有可变长度数组类型的变量,其生命周期从该对象的声明一直到程序的执行离开声明的作用域。[注:离开包含声明的最里面的语句块,或是跳到那个语句块中的某一点或在声明之前的一个嵌套语句块,即离开该声明的作用域。]如果作用域被递归地进入,那么该对象的一个新的实例每次都会被创建。该对象的初始值是不确定的。
8、一个具有结构体或联合体类型的非左值表达式,这里该结构体或联合体包含了具有数组类型的一个成员(递归包含所有所包含的结构体和联合体的成员)以自动存储持久性和临时生命周期来引用一个对象。[注:当一个数组成员被访问时,这么一个对象的地址被隐式地获取。]当表达式被计算时,其生命周期开始,并且其初始值为该表达式的值。当包含完整表达式或完整声明符结束时,其生命周期周期结束。任何企图修改具有临时声明周期的一个对象都将导致未定义行为。
ISO/IEC 9899:2011 条款6.2.4——对象的存储持久性的更多相关文章
- ISO/IEC 9899:2011 条款6.2.8——对象的对齐
6.2.8 对象的对齐 1.完整的对象类型具有对齐要求,对齐要求是对该类型对象可以在哪个地址进行分配的放置限制.一个对齐是一个实现定义的整数值,表示一个给定对象可以分配在相继两个地址之间跨多少字节的位 ...
- ISO/IEC 9899:2011 条款3——术语、定义与符号
3. 术语.定义与符号 1.对于此国际标准的意图,应用了以下定义.其它术语是在用斜体类型或一个语法规则左侧出现的地方定义.在本国际标准中所显式定义的术语不被假定为对其它地方所定义的类似术语的隐式引用. ...
- ISO/IEC 9899:2011 条款5——5.2.1 字符集
5.2.1 字符集 1.两个字符集和它们相关联的依次顺序应该被定义:写在源文件中的集合(源字符集),以及在执行环境中被解释的集合(执行字符集).每个集合此外被划分为一个基本字符集,其内容由本子条款给出 ...
- ISO/IEC 9899:2011 条款6.4.2——标识符
6.4.2 标识符 6.4.2.1 通用 语法 1.identifier: identifier-nodigit identifier identifier-nondigit identifie ...
- ISO/IEC 9899:2011 条款6.4.3——通用字符名
6.4.3 通用字符名 语法 1.通用字符名: universal_character-name: \u hex-quad(四位十六进制数) \U hex-quad hex-quad hex-quad ...
- ISO/IEC 9899:2011 条款5——5.1.2 执行环境
5.1.2 执行环境 1.定义了两个执行环境:独立式(freestanding)以及宿主的(hosted).在这两种情况下,当一个派定的C函数被执行环境调用时,程序就启动.所有具有静态存储周期的对象应 ...
- ISO/IEC 9899:2011 条款4——标准顺从
4. 标准顺从 1.在本国际标准中,“应该”被解释为对一个实现或一个程序的要求:相反地,“不该”被解释为禁用. 2.如果违反了出现在一个强制规定或运行时强制规定之外的“应该”或“不该”要求,那么该行为 ...
- ISO/IEC 9899:2011 条款6——语言
6 语言 6.1 标记法 1.在本条款中所使用的语法标记法.语义类别(非终结符)用斜体字指示,而字面量单词以及字符集成员(终结符)用粗体字指示.跟在一个非终结符后面的冒号(:)引出其定义.在单独的行中 ...
- ISO/IEC 9899:2011 条款6.3——转换
6.3 转换 1.有些操作符将操作数的值自动地从一种类型转换为另一种.本子条款指定了从这么一个隐式转换所要求的结果,以及从一个投射操作(一个显式转换)所要求的结果.在6.3.1.8中所列出的信息概括了 ...
随机推荐
- 【动态规划】ZZNU-OJ- 2054 : 油田
2054 : 油田 (一个神奇的功能:点击上方文字进入相应页面) 时间限制:1 Sec 内存限制:32 MiB提交:49 答案正确:6 提交 状态 讨论区 题目描述 在太平洋的一片海域,发现了大量的油 ...
- java程序报错:Unable to open debugger port (127.0.0.1:63959): java.net.SocketException "socket closed",编译过来就是无法打开调试器端口,套接字已关闭
报错:Unable to open debugger port (127.0.0.1:63959): java.net.SocketException "socket closed" ...
- 7月新的开始 - Axure学习05 - 元件库的创建
元件库的创建 元件库的创建.载入.编辑和删除等操作 元件库的后缀名名:.rplib 学习结果: 实现iPhone6的原型图 分辨率是 1080*1920,现在我们按比例缩小去实现(360*640)
- python 正则表达式特殊字符
字符 描述 \ 将下一个字符标记为一个特殊字符.或一个原义字符.或一个 向后引用.或一个八进制转义符.例如,'n' 匹配字符 "n".'\n' 匹配一个换行符.序列 '\\' 匹配 ...
- 2019牛客暑期多校训练营(第十场)Han Xin and His Troops——扩展中国剩余定理
题意 求解 $n$ 个模方程 $x \equiv a (mod \ b)$,不保证模数互素($1 \leq n \leq 100$,$0 \leq b < a< 10^5$). 分析 套扩 ...
- nginx location中root指令和alias指令的区别
nginx location中root指令和alias指令 功能:将url映射为文件路径,以返回静态文件内容 差别:root会将完整的url映射进文件路径中 alias只会将location后的url ...
- SublimeText 括号插件 Bracket Highlighter高亮设置
1. ctrl + shift + p,打开命令面板,输入install,在菜单中选择Package Control:Install Package如图 2. 步骤1后弹出的命令输入框中 输入:Bra ...
- HTML 文字垂直剧中
HTML 有个使文字垂直剧中的代码 line-height: line-height:使用时 总高多少 后边就输入多少PX 剧中前展示 剧中后展示
- Vagrant Docker Composer Yarn 国外资源下载慢或失败的问题
1 问题 有时,我们请求国外资源时,下载巨慢,甚至失败.如: cd vue-devtools/ $ yarn install 进行到 cypress.... 时,可能失败. 2 解决 次日凌晨(7-8 ...
- PHP 调用 shell
可以使用的命令: popenfpassthrushell_execexecsystem 1.popen resource popen ( string command, string mode ) 打 ...