ホームページ >バックエンド開発 >C++ >C で「new」演算子を使用する必要があるのはどのような場合ですか?

C で「new」演算子を使用する必要があるのはどのような場合ですか?

DDD
DDDオリジナル
2024-11-30 10:51:11829ブラウズ

When Should I Use the

C で "new" を使用する場合 ?

C#/Java から移行する開発者にとって、C でのオブジェクトのインスタンス化を理解するのは複雑な場合があります。 。この記事では、「new」演算子をいつ使用するべきか、およびいつ使用を控えるべきかを明確にします。

「new」の使用: オブジェクトの寿命を維持する

次の場合は「new」を使用します。明示的に削除されるまでオブジェクトを存続させたい。 「new」を指定しない場合、オブジェクトはスコープから外れると破棄されます。次の例を考えてみましょう。

void foo() {
  Point p = Point(0,0); // p is destroyed here
}

for (...) {
  Point p = Point(0,0); // p is destroyed after each iteration
}

配列に "new" を使用する

C の配列はインプレース (つまり、スタック上) に割り当てられます。ただし、実行時に決定されるサイズの配列を作成する必要がある場合は、「new」を使用して配列を割り当てる必要があります。

void foo(int size) {
   Point* pointArray = new Point[size];
   ...
   delete [] pointArray;
}

インプレース割り当て ("new" なし)

パフォーマンス上の理由から、インプレース割り当てが推奨されます。これは、クラス内で宣言されたオブジェクトに対して自動的に行われます。

class Foo {
  Point p; // p will be destroyed when Foo is
};

「new」を使用したオブジェクトの割り当てと解放は、インプレース割り当てよりも計算量が多くなることに注意してください。不要なオーバーヘッドを避けるために、必要な場合にのみ使用してください。

以上がC で「new」演算子を使用する必要があるのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。