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

C で `new` キーワードを使用する必要があるのはどのような場合ですか?

Susan Sarandon
リリース: 2024-12-20 07:08:14
オリジナル
1053 人が閲覧しました

When Should I Use the `new` Keyword in C  ?

C の 'new' キーワードの必要性を理解する

C では、メモリ管理に 'new' キーワードが導入され、オブジェクトの制御が提供されます。作成と割り当て。その使用法を理解するために、2 つのメソッドを調べてみましょう。

メソッド 1: 'new' を使用する

'new' を使用すると、空きストア (ヒープ) 上のオブジェクトにメモリが割り当てられます。 )、これは以下を提供します:

  • 割り当てられたメモリを解放し、メモリを防ぐには、明示的な削除が必要です。
  • オブジェクトは明示的に削除されるまで割り当てられたままとなり、スコープを超えてもデータの永続化が可能になります。
MyClass* myClass = new MyClass();
myClass->MyField = "Hello world!";
ログイン後にコピー

方法 2: 'new' を使用しない

「new」を使用せずにオブジェクトを宣言すると、そのオブジェクトはローカル変数の一時ストレージであるスタックに割り当てられます。このアプローチには次の特徴があります。

  • メモリ割り当ては暗黙的であり、自動的に行われます。
  • オブジェクトがスコープ外になるとメモリが再利用されるため、削除は不要です。
MyClass myClass;
myClass.MyField = "Hello world!";
ログイン後にコピー

正しい選択メソッド

選択は、必要なメモリ管理とオブジェクトの耐久性要件によって異なります。

  • 次の場合は 'new' を使用します。

    • オブジェクトを動的に割り当て、その有効期間を制御したいとします。
    • オブジェクトへのポインタをオブジェクトから返す必要があります。関数 (スタックに割り当てられたオブジェクトを返すのは安全ではありません)。
  • 次の場合は 'new' を避けてください:

    • 危険を冒さずに自動メモリ管理を好む場合メモリ リーク。
    • それ以上のオブジェクトの永続性は必要ありません。

メモリ管理の経験則:

メモリ リークを防ぐために、すべての「新しい」をペアリングする習慣を採用してください。 「削除」ステートメントを使用します。これにより、メモリが適切にクリーンアップされ、潜在的な問題が回避されます。

Foobar *foobar = new Foobar();
// ...
delete foobar; // Cleanup the allocated memory
ログイン後にコピー

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート