内存四区:
1.代码区:
代码区:用来存放你写的代码的,只读和共享。
只读:意思是编译运行后不能操作,其目的是防止程序意外的修改了他的命令。
共享:共享的目的是对于频繁执行的程序,只需要在内存中有一份代码即可。
2.全局区:
全局变量和静态变量存放在此。 静态变量:static+普通变量=静态变量
全局区还包含了常量区字符串常量和其他常量也存放自此。常量:1.字符串常量2.const修饰的变量(1.const修饰的全局变量 2.const修饰的局部变量)
[一.不在全局区中:局部变量,局部常量\ 在全局区中:全局变量,静态变量,字符串常量,全局常量]
3.栈区:
由编译器自动分配释放,存放函数的参数值,局部变量。
注意事项:不要返回局部变量的地址,栈区开辟的数据由编译器自动释放。
局部变量存放在栈区,栈区的数据在函数执行完后自动释放。
(形参数据和局部变量放在栈上)
(第一次可以打印正确的始祖,是因为编译器做了保留)
4.堆区:
由程序员分配释放,若程序员不释放,程序结束时由操作系统回收。
在c++中主要利用new在堆区开辟内存。int*p=new int(10)
实质是在栈区定义了一个指针型的局部变量,指向了堆区的地址。
new运算符:
int*p=new int(10) ;开辟一个堆区的内存
delete p;释放new开辟的空间
利用new开辟数组
int* arr = new int [10];利用for循环来操控。
for(int i ;i<10;i++)
{
arr[i]=i+100
}
释放堆区的数组
delete[] arr;
释放数组的时候要加[]才可以。
标签:栈区,常量,int,四区,局部变量,C++,内存,new From: https://www.cnblogs.com/030622zfy-/p/16861789.html