1新しいオペレーターの目的
C++での使用新着オペレーターは、ヒープ領域にデータを割り当てます。
知らせ:
-
ヒープ領域によって開発されたデータは、プログラマーによって手動で開発され、手動でリリースされ、オペレーターを使用してリリースされます消去
-
newによって作成されたデータは、データに対応するタイプへのポインタ
2文法
文法:new 数据类型
2.1基本構文
new 数据类型(值)
テストコード:
#include <iostream>
#include <string>
using namespace std;
//使用new在堆区分配一个int变量,并返回变量的指针
int* func1()
{
int *a = new int(10); //在堆区开辟一块内存,存放变量a,并初始化为10
return a; //返回堆区中的指针变量
}
使用new在堆区分配一个string 变量,并返回变量的指针
string* func2()
{
string *str = new string("Hellow World!");
return str;
}
int main()
{
int *p = func1();
string *str = func2();
cout << *p << endl;
cout << *p << endl;
cout << *str << endl;
cout << *str << endl;
//利用delete释放堆区数据
delete p;
//cout << *p << endl; //报错,被释放的空间不可访问
cout << *str << endl;
return 0;
}
出力結果:
10
10
Hellow World!
Hellow World!
Hellow World!
2.2新規およびアレイ
new 数据类型 [数组大小]
[]
のサイズは整数である必要がありますが、定数である必要はありません。
テストコード:
Usenew
は、ヒープ領域にサイズ10のint配列を割り当て、最初のintへのポインターを返します。
#include <iostream>
using namespace std;
int main()
{
int* arr = new int[10];
for (int i = 0; i < 10; i++)
{
arr[i] = i;
}
for (int i = 0; i < 10; i++)
{
cout << arr[i] << " ";
}
cout << endl;
//释放数组 delete 后加 []
delete[] arr;
return 0;
}
出力結果:
0 1 2 3 4 5 6 7 8 9
知らせ:
- newで作成された配列は通常、動的ますが、配列型のオブジェクトを取得する代わりに、配列の要素型へのポインターを取得します。
- 配列を解放した後に[]を追加します削除