由程序员分配释放,若程序员不释放。程序结束时由操作系统回收
在c++中主要利用new在堆区开辟内存
#include<iostream>
using namespace std;
int * func()
{
//利用new关键字 可以将数据开辟在堆区
//指针本质也是局部变量 放在栈上 指针保存的数据放在堆区
int * p = new int(10);
return p;
}
int main()
{
//在堆区开辟数据
int *p = func();
cout << *p << endl;//第一次可以打印正确的数字,是因为编译器做了保留
cout << *p << endl;//第二次这个数据就不再保留了
system("pause");
return 0;
}