[C++那些事]002数据的存放

学习写程序,就不能不对程序的数据存放有一定的了解。可能你常常听说栈啊、堆啊什么的,下面咱们看看数据的存放有哪几个位置

①.栈区

存储【函数参数】以及【局部变量】,也称为自动变量,关键字auto,若无特别说明,默认包含关键字auto。生命周期仅局限于某个函数作用域额内,由编译器自动分配和释放。操作方式类似数据结构的栈,LIFO原则

②.堆区

存储程序员动态创建的对象,由程序员创建和释放,注意它与数据结构中的堆是两回事,分配方式倒是类似于链表

③.寄存器区

存储栈顶指针(SP)和指令指针(IP),由操作系统负责, 一般加register关键字表示寄存器变量

④.全局区(静态区)

 存储全局变量(静态变量),由操作系统负责,程序运行结束销毁。
全局变量不显式用static修饰的全局变量,但全局变量默认是动态的,作用域是整个工程,在一个文件内定义的全局变量,在另一个文件中,通过extern 全局变量名的声明,就可以使用全局变量
静态变量有关键字static,属于本类所有对象共享,作用域限于声明此变量所在的文件,其他的文件即使用extern声明也不能使

⑤.文字常量区

 存储常量字符串,比如代码中定的“HelloWorld”等,由操作系统负责, 程序结束后由系统销毁
在文字常量区的字符串不可修改。当字符串相同时候,系统还会讲指针指向同一处

⑥.程序代码区

 存放函数体的二进制代码
原文地址:https://www.cnblogs.com/sky-co/p/3448634.html