cpp notes 3 内存四区
2023-01-01 本文已影响0人
loughsjtu
代码区,全局区,堆,栈
栈(stack)由编译器自动分配释放,存放函数的形参,局部变量等。所以,不要进行返回局部变量的地址之类的操作。局部变量会在函数结束时销毁,返回的指针是野指针
利用new操作符在堆区开辟数据。堆区的数据由程序员手动开辟手动释放,释放利用操作符delete。未释放的数据在程序结束后由系统自动释放。
利用new创建的数据,会返回该数据类型对应的指针。
int * func()
{
//在堆区创建整型数据
//new返回是该数据类型的指针
int *p = new int(10);
return p;
}
int *p0=func();
cout<<*p0<<endl;
//会输出10
//释放堆区数据
int *p=new int(10);
delete p;
int * arr=new int[10];
for (int i, i<10, i++)
{
arr[i]=i+100;
}
//释放堆区数组,释放数组的时候要加[]
delete[] arr;