程序在执行时,内存被划分为四个区域
先编译后运行
1代码区: 在程序编译后生成exe文件,程序运行前程序被分为两个区域:代码区,全局区。
共享:“一体”,目的是在频繁执行程序(运行exe文件)的时候,exe只调用原来的代码,而不是这个代码的副本
只读:防止代码被篡改
2全局区:包含全局区,静态变量,常量。在程序运行结束后由操作系统释放。
全局变量:在函数体之外的变量。。静态变量:static开头。。
常量:字符串常量“双引号引起来的就是”,const修饰的全局变量
,const修饰的局部变量不在全局区中而在代码区中
3栈区:程序运行后,由局部变量和形参组成。注意不能返回局部变量的地址,因为编译器在程序执行完后会自动释放栈区的数据,
在第一次程序执行时会返回正确的值,但在第二次执行时由于被编译器删除了,所以会出现乱码的情况··
4堆区:程序运行后。有程序员释放,若不释放,运行结束后会有操作系统自动回收。
使用new关键字创建堆区。用局部变量指针指向new返回的地址。
手动释放:使用delete操作符
new的基本语法:new+类型(数值) 释放 delete p
在堆区开辟数组:new 类型[],释放 delete[] p