c++中利用new
操作符在堆区开辟数据,用delete
释放内存。
语法:new 数据类型
利用new
创建的数据,会返回该数据对应的类型的指针
示例1:基本语法
#include <iostream>
using namespace std;
int *func()
{
int *a = new int(10);//定义int型变量a,并赋值10
return a;
}
int main()
{
int *p=func();
int c,*b;
b = &c;
*b = 20;
cout << *p << endl;
cout << *p << endl;
//利用delete释放堆区数据
delete p;
//cout << *p << endl; // 编译器会报错,因为*p已经被释放(即p指向的
//内存已被释放),不可在访问。在这里需要注意,当delete p之后,没有使p
//指向新的内存空间,就直接使用,系统就会报错,因为没有指向的指针就是野
//指针,所以系统会报错。当我们还需要p的时候,就要使p重新指向新的内存空间。
p = NULL;
p = &c;
cout << *p << endl;
system("pause");
}
示例2:开辟数组
#include <iostream>
using namespace std;
//堆区开辟数组
int main()
{
int *arr = new int[10];
for (int i = 0; i < 10; i++)
{
cout << arr[i] << endl;
}
//释放数组的形式为delete [] 数组名
delete [] arr;
system("pause");
return 0;
}