9.3 new操作符
- new操作符返回的时对应数据类型的指针,所以要用一个指针区接收。
- 数据使用完成后应及时释放,用delete关键字释放。
还是上节的例子:
#include<iostream>
using namespace std;
int* func()
{
int *p = new int(10);
return p;
}
int main()
{
int* p = func();
cout << *p << endl;
cout << *p << endl;
delete p;
cout << *p << endl;
system("pause");
return 0;
}
我们在delete后再去解引用p,程序就会报错。
delete后,这块内存的权限不再属于程序,所以再进行操作会由权限问题。
但在delete前可以正常打印出来。
使用new创建数组:
#include<iostream>
using namespace std;
void func()
{
//[]里的10是10个元素
int *arr = new int[10];
for (int i = 0; i < 10; i++)
{
arr[i] = i + 100;
}
for (int i = 0; i < 10; i++)
{
cout << arr[i] << endl;
}
//释放数组时要在delete后加上[]
delete[] arr;
}
int main()
{
func();
system("pause");
return 0;
}
如果想要在创建数组的额同时进行初始化,可以像下面这样:
int *arr = new int[10]{ 1, 2, 3 };