C で新しいキーワードが必要になるのはどのような場合ですか?
C では、オブジェクトを作成するには 2 つのオプションがあります。 new キーワードを使用するか、またはではありません。
を使用していますnew
MyClass* myClass = new MyClass();
myClass->MyField = "Hello world!";
ログイン後にコピー
- ヒープ上のオブジェクトにメモリを割り当てます (空きストア)。
- 割り当てられたメモリを解放するには、明示的な削除が必要です。
- オブジェクトが削除されるまでメモリは割り当てられたままになります。 scope.
new を使用しない
MyClass myClass;
myClass.MyField = "Hello world!";
ログイン後にコピー
- スタック上のオブジェクトにメモリを割り当てます。
- 明示的な削除はありません必須です。
- オブジェクトがなくなると、メモリは自動的に解放されます。範囲。
選択に関する考慮事項
どの方法を使用するかは、特定のニーズによって異なります。
-
使用new:
- ヒープ上にオブジェクトを作成します。
- 関数からオブジェクトへのポインタを返します。
-
使用しないでくださいnew:
- メモリの手動管理とメモリ リークの可能性を回避します。
- 現在のスコープを離れないオブジェクトを作成します。
追加注
- new を使用するには、割り当てられたメモリを解放するために delete を使用する必要があります。これはメモリ リークを防ぐためです。
- new は通常、ヒープ上にオブジェクトを作成するために使用されますが、new を使用しない場合は通常、スタックに割り当てられたオブジェクトに使用されます。
- スタックのメモリ容量は、そのため、スタックにオブジェクトを割り当てすぎると、スタック オーバーフローが発生する可能性があります。
以上がC で `new` キーワードを使用する必要があるのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。