[C++那些事]002数据的存放
学习写程序,就不能不对程序的数据存放有一定的了解。可能你常常听说栈啊、堆啊什么的,下面咱们看看数据的存放有哪几个位置
①.栈区
存储【函数参数】以及【局部变量】,也称为自动变量,关键字auto,若无特别说明,默认包含关键字auto。生命周期仅局限于某个函数作用域额内,由编译器自动分配和释放。操作方式类似数据结构的栈,LIFO原则
②.堆区
存储程序员动态创建的对象,由程序员创建和释放,注意它与数据结构中的堆是两回事,分配方式倒是类似于链表
③.寄存器区
存储栈顶指针(SP)和指令指针(IP),由操作系统负责, 一般加register关键字表示寄存器变量
④.全局区(静态区)
存储全局变量(静态变量),由操作系统负责,程序运行结束销毁。
全局变量不显式用static修饰的全局变量,但全局变量默认是动态的,作用域是整个工程,在一个文件内定义的全局变量,在另一个文件中,通过extern 全局变量名的声明,就可以使用全局变量
静态变量有关键字static,属于本类所有对象共享,作用域限于声明此变量所在的文件,其他的文件即使用extern声明也不能使
⑤.文字常量区
存储常量字符串,比如代码中定的“HelloWorld”等,由操作系统负责, 程序结束后由系统销毁
在文字常量区的字符串不可修改。当字符串相同时候,系统还会讲指针指向同一处
⑥.程序代码区
存放函数体的二进制代码