1内存分区模型
品牌网站建设,C++程序在执行时,将内存大方向划分为***4个区域***
代码区:存放函数体的二进制代码,由操作系统进行管理
全局区:存放全局变量和静态变量以及常量
栈区:有编译器自动分配释放,存放函数的参数值、局部变量等
堆区:由程序员分配和释放,若程序员不释放,程序结束后,由操作系统回收
1.1 程序运行前
在程序编译后,生成exe可执行程序,为执行该程序前分为两个区域:
代码区:
存放CPU执行的机器指令
代码区是共享的,共享的目的是对于频繁执行的程序,只需要在内存中有一份代码即可
代码区是只读的
全局区:
全局变量和静态变量存放在此
全局区还包含了常量区,字符串常量和其他常量也存放于此
该区域的数据在程序结束后由操作系统释放
不在全局区的:
局部变量,const修饰的局部变量(局部常量)
在全局区的:
全局变量——定义在函数体外的变量
静态变量——用关键字 static 修饰的变量
字符串常量——使用双引号的字符串,如 “Hello”
全局常量——使用const修饰的全局变量
##1.2 程序运行后
栈区
由编译器自动分配释放,存放函数的参数值、局部变量等
**注意事项:**不要反悔局部变量的地址,栈区开辟的数据由编译器自动释放
堆区
由程序员分配释放,若程序员不释放,程序结束后由操作系统回收。
C++中主要利用new在堆区开辟内存
##1.3 new 操作符
C++中利用new操作符在堆区开辟数据
堆区开辟的数据,由程序员手工开辟、手动释放、释放利用操作符delete
语法: new 数据类型
广州天河区珠江新城富力盈力大厦北塔2706
020-38013166(网站咨询专线)
400-001-5281 (售后服务热线)
深圳市坂田十二橡树庄园F1-7栋
Site/ http://www.szciya.com
E-mail/ itciya@vip.163.com
品牌服务专线:400-001-5281
长沙市天心区芙蓉中路三段398号新时空大厦5楼
联系电话/ (+86 0731)88282200
品牌服务专线/ 400-966-8830
旗下运营网站:
Copyright © 2016 广州思洋文化传播有限公司,保留所有权利。 粤ICP备09033321号