https://blog.csdn.net/u011616739/article/details/62052179
1 动态内存
1,C++程序中所使用的对象都是有着严格定义的生存期。
全局对象:在程序启动时分配,程序结束时销毁。
局部对象:在进去其定义所在的程序块时被创建,在离开块时销毁。
局部static对象:在第一次使用前分配,在程序结束时销毁。
局部变量:
作用域:{}
生命周期:定义时分配空间,离开{},自动释放、
当局部变量未初始化时,默认值时随机值。
static局部变量:
作用域:{}
生命周期:编译时分配空间,初始化只能使用常量,程序结束时空间释放。
当静态局部变量未初始化时,默认值为0
全局变量:
作用域:任何地方使用,但是使用前必须声明。
生命周期:编译时分配空间,程序结束时释放。
全局变量只能定义一次 ,但是可以声明多次。
static全局变量:
作用域:只能在定义所在的文件中使用此变量(内部链接)
生命周期:编译时分配空间,程序结束时释放。
static全局变量可以定义在多个.c文件中。
extern函数 和 static函数的区别:
extern关键字:实现调用另一个文件中的函数和变量而不通过头文件引用。extern函数只能定义一次。
static关键字:只能在定义的文件中使用当前的函数,不同文件都可以定义相同函数一次。
全局变量和静态变量是在程序编译期就分配到数据段和bss段。