C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C ++でnew演算子を使用する場合と、使用しない場合は?


new演算子を使用すると、ヒープでのメモリ割り当ての要求が示されます。十分なメモリが利用可能な場合、メモリを初期化し、そのアドレスをポインタ変数に返します。

new演算子は、deleteが呼び出されるまでデータオブジェクトがメモリに残っている必要がある場合にのみ使用する必要があります。それ以外の場合、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が指すメモリ位置に格納されている値が表示されます。最後に、削除演算子を使用してメモリを解放します。

これを示すコードスニペットは次のとおりです-

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;

  1. C ++で新しい演算子を使用してメモリを初期化する方法は?

    C ++の新しい演算子は、メモリを割り当て、初期化しないように定義されています。新しい演算子を使用してint型の配列を割り当て、それらすべてをデフォルト値(つまり、intの場合は0)に初期化する場合は、次の構文を使用できます- 構文 new int[10](); 空の括弧を使用する必要があることに注意してください。たとえば、(0)やその他の式を使用することはできません。そのため、これはデフォルトの初期化にのみ役立ちます。 fill_n、memsetなどを使用して同じメモリを初期化する他の方法があり、これらを使用してオブジェクトをデフォルト以外の値に初期化できます。 例 #include&

  2. C ++のポインタ演算子*とは何ですか?

    C ++には、演算子のアドレス(&)と間接演算子(*)の2つのポインター演算子があります。ポインタは、別の変数のアドレスを含む変数です。または、別の変数のアドレスを含む変数は、他の変数を「指している」と言うことができます。変数は、オブジェクト、構造体、またはポインター自体を含む任意のデータ型にすることができます。 間接演算子(*)。これは&の補数です。オペランドで指定されたアドレスにある変数の値を返す単項演算子です。たとえば、 例 #include <iostream> using namespace std; int main () {    int &nbs