四.堆区的使用
1.new/delete
:
#include<iostream>
using namespace std;
/*
int* funa()//返回局部变量 a 的地址
{
int a = 10;
return &a;//返回
}
*/
int* funb()
{
int* a = new int(233);//在堆区中开辟内存
//每次开辟都会返回所开辟的内存地址,
//需要和 delete 配合使用
//基本用法: int* a = new int(233); //括号内为初始化值
// delete a; //释放变量
//开辟数组: int* arr = new int[10];
// delet[] arr; //释放数组
return a;
}
int main() {
int a = 0, b = 0;
/*
int* pa = funa();
cout << "局部变量 值 地址" << endl
<< *pa << endl
<< pa << endl;
cout << *pa << endl
<< pa << endl;
*/
int* pb = funb();//开辟数
int* pc = new int[4];//开辟数组
for (a = 0; a < 4; a++)
{
pc[a] = a * 27;
}
/*
cout << "局部变量 值 地址" << endl
<< *pa << endl
<< pa << endl;
cout << *pa << endl
<< pa << endl;
*/
cout << "开辟数 值 地址" << endl
<< *pb << endl
<< pb << endl;
cout << *pb << endl
<< pb << endl;
cout << "开辟数组 值 地址" << endl;
for (a = 0; a < 4; a++)
{
cout << pc[a] << endl
<< pb + a << endl;
}
cout << endl;
for (a = 0; a < 4; a++)
{
cout << pc[a] << endl
<< pb + a << endl;
}
delete pb;//利用delete释放堆区数据
delete[] pc;
//cout << *pa << endl;//报错,释放的空间不可访问
system("pause");
return 0;
}