内存四区(堆)
在上一次分享中,我和大家分享了栈区,今天栈区来了。
而内存四区中,堆区是干嘛的呢?
堆区,也是用来存放数据的,只不过呢,堆区中的数据的生死存亡是由程序员来控制的。
当然如果你一直不管堆区中数据的死活,编译器也会在程序结束后,清理掉它。
接下来我们先放代码
#include<iostream>
using namespace std;int*ffff()
{int a = 10;//这是一个普通的局部变量,存放在栈区int* p = new int(20);//关键字符new,运用new,就可以在堆区开辟空间存放数据,new+类型+(初始值)return p;
}int main()
{int* t= ffff();cout << *t << endl;cout << *t << endl;cout << *t << endl;cout << *t<< endl;return 0;
}
就像上面的代码,使用new这个关键字符在,在堆区中开辟了一个空间来存放数据,然后他就会返回这个空间的地址,所以才需要创建一个指针来接收
int* p = new int(20);//关键字符new,运用new,就可以在堆区开辟空间存放数据,new+类型+(初始值)
不同于栈区存放的局部变量只会保留一次后随时可能被清理掉,堆区的数据,如果程序员一直不管它的话,编译器会在程序结束后清理掉它。
所以多次根据地址打印,它的值都不会变。
对于堆区我们可以总结两点:
1.堆区由程序员掌控分配。
2.可以用new这个关键字符,在堆区上开辟空间。
完