合规国际互联网加速 OSASE为企业客户提供高速稳定SD-WAN国际加速解决方案。 广告
>[info]# 生命期 生命期的**对象**是变量表示符 ## **动态生命期** 对象:普通局部变量 位置:堆区(heap) 初值:不确定值(随机值) 时机:运行时(手动分配) 长短:短 - 这种生命期由程序中特定的函数调用(malloc()和free())或操作符(new和delete)来创建和释放. - 具有动态生命期的变量驻留在内存的堆区中. - 当用函数malloc()或操作符new为变量分配空间时,生命期开始;当用函数free()或操作符delete释放该变量的空间或程序结束时,生命期结束. new运算符使用的一般格式为: **new 类型[长度];** delete运算符使用的一般格式为: **delete[ ] 指针变量;** ## **局部生命期** 对象:普通局部变量 位置:栈区(stack) 初值:不确定值(随机值) 时机:编译时 长短:短 - 在函数内部声明的变量或者是块中声明的变量,具有局部生命期.该生命期起始于声明点,结束于作用域结束处. - 区别: 具有局部生命期的变量肯定具有局部作用域; 而具有局部作用域的变量,若为普通局部变量,则具有局部生命期;若为静态局部变量,则具有静态生命期. - 具有局部生命期的变量驻留在内存的栈区;若不作初始化,其值不确定. ## **静态生命区** 对象:普通全局变量、静态全局变量、静态局部变量 位置:数据区(date) 初值:相应类型的0值 时机:编译之前 长短:长 - 这种生命期与程序的运行期相同,一旦程序开始运行,这种生命期的变量就存在,当程序结束时,其生命期就结束. - 全局变量,静态全局变量,静态局部变量,函数都具有静态生命期,驻留在内存的全局数据区或代码区. - 静态生命期的变量,若不作显式初始化,C++编译器会自动将其初始化成(相应类型的)0.