- * 比较重要 四区:
- ① 栈区(局部变量,形参)
- 栈区注意事项————不要返回局部变量的地址
- 栈区的数据由编译器开辟和释放
- 例子:
- int a=10;//局部变量
- return &a;//返回局部变量的地址
- 第一次可以通过地址找到a的值
- 但第二次找不到a的地址以及a的值
- ②堆区:
- 由程序员分配,若程序员不释放,程序结束时有操作系统释放
- C++中主要利用new在堆区开辟内存
- 在堆区开辟数据
- #include<iostream>
- using namespace std;
- int *func()
- {
- 利用new关键字开辟堆区
- 指针本质上也是局部变量
- int *p=new int(10);//在堆区开辟10个int字节大小的空间
- return p;
- }
- int main()
- {
- int*p=func();
- cout<<*p<<endl;
- system("pause");
- return0;
- }
- 2.关于new操作符
- 堆区开辟的数据,由程序员手动开辟,手动释放;释放是利用操作符delete
- new的基本语法;
- 在堆区利用new开辟数组
- 例子:
- #include<iostream>
- using namespace std;
- int *fun()
- {
- int *p=new int(10);
- return p;
- }
- void testi()
- {
- int *p=func();
- cout <<*P<<endl;
- //利用delete释放内存空间
- delete p;
- }
- void test()
- {
- int *p=new int[10];//10代表数组有十个元素;
- for(int i=0;i<10;i++)
- {
- cout<<p[i]<<endl;
- }
- 释放数组空间
- delete[]p;//释放数组时,记得加[];
- }
- int main()
- {
- test1();
- system("pause");
- return;
- }*/