C++中何時使用new運算子,何時不應使用?


使用new運算子表示請求在堆上分配記憶體。如果可用記憶體足夠,它將初始化記憶體並將地址返回給指標變數。

只有在資料物件應保留在記憶體中直到呼叫delete時才應使用new運算子。否則,如果不使用new運算子,則物件在其超出作用域時會自動銷燬。換句話說,使用new的物件需要手動清理,而其他物件在其超出作用域時會自動清理。

以下是new運算子的語法。

pointer_variable = new datatype;

在上文語法中,pointer_variable是指標變數,記憶體地址將返回給它;datatype是記憶體的內建資料型別。

演示new運算子用法的程式如下所示。

示例

 線上演示

#include <iostream>
using namespace std;
int main () {
   int *ptr1 = NULL;
   ptr1 = new int;
   float *ptr2 = new float(223.324);
   *ptr1 = 28;
   cout << "Value of pointer variable 1 : " << *ptr1 << endl;
   cout << "Value of pointer variable 2 : " << *ptr2 << endl;
   delete ptr1;
   delete ptr2;
   return 0;
}

輸出

上述程式的輸出如下所示。

Value of pointer variable 1 : 28
Value of pointer variable 2 : 223.324

現在讓我們理解上述程式。

new運算子用於初始化記憶體並將地址返回給指標變數ptr1和ptr2。然後顯示ptr1和ptr2指向的記憶體位置中儲存的值。最後,delete運算子用於釋放記憶體。

顯示此功能的程式碼片段如下:

int *ptr1 = NULL;
ptr1 = new int;
float *ptr2 = new float(223.324);
*ptr1 = 28;
cout << "Value of pointer variable 1 : " << *ptr1 << endl;
cout << "Value of pointer variable 2 : " << *ptr2 << endl;
delete ptr1;
delete ptr2;

更新於:2020年6月26日

8K+ 次瀏覽

啟動你的職業生涯

透過完成課程獲得認證

開始學習
廣告