编程语言

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;

上一篇下一篇

猜你喜欢

热点阅读