new操作符
c++利用new操作符在堆区开辟数据
堆区开辟的数据,由程序员手动释放,利用操作符delete
1.基本语法
int *func()
{
//在堆区创建一个整型数据
//new返回该数据类型的指针;
int * p=new int (10);
return p;
}
void test01()
{
int *p=func();
cout<<*p<<endl;///正常输出
cout<<*p<<endl;///正常输出
cout<<*p<<endl;//正常输出
//堆区的数据由程序员管理开辟释放
//释放利用关键字delete
delete p;
cout<<*p<<endl;//异常:读取访问权限错误,
内存已经被释放,再次访问就是非法操作,报错
}
int main()
{
test01();
return 0;
}
2.在堆区利用new开辟数组
void test02()
{
int * arr = new int [10];//10代表数组有10个元素,返回首地址
for(int i=0;i<10;i++)
{
arr[i] = i+100;//给10个元素赋值100-109
}
for(int i=0;i<10;i++)
{
cout<<arr[i]<<endl;
}
//释放堆区数组
//需要加[],告诉编译器释放的是一个数组,若不加,则释放单个元素
delete[] arr;
}
int main()
{
test02();
return 0;
}