C++核心编程:面向对象进行编程
1内存分区模型
内存四区:代码区、全局区、栈区、堆区
意义:对不同数据进行分区管理,利于代码的生命周期
1.1代码执行前
1.代码区:用于存放二进制数据
是共享(对于频繁操作的代码而言,只需要存一份即可)和只读(防止程序意外修改)的
2.全局区:用于存放全局变量、静态变量、常量
全局变量:在main函数之外的变量called全局常量。global➡g➡全局变量 local➡l➡局部变量
静态常量:在数据类型和变量名称前+关键字static ,And 无论是在main函数里面还是外面,只要有static修饰即为静态变量。 eg:static int a=10;
常量:包括字符串常量、const修饰的全局变量(全局变量)、const修饰的局部变量(不在全局区中)
局部变量:在main函数中的除了static修饰的变量之外的变量called局部变量,包括const修饰的局部变量。
变量分布图
1.2代码执行后
1.栈区:由编译器进行分配和释放,存放局部变量和形参
tips:不可以返回局部变量的地址,第一次执行返回可以访问其中的值,第二次访问就会出现乱码;其原因是由于栈区开辟的数据由编译器自动释放。
2.堆区:由程序员管理开辟和释放(即在点了窗口上的×之后才让数据死),
利用new关键字开辟内存
new关键字的应用:new 数据类型(值);➡由于new关键字开辟的内存是返回某个数据的地址,因此需要用*p来接收 eg:int*p=new int(10);