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;
廣告