質問

簡単な質問: delete または delete [] c が必要ですか?言語は重要ですか?

char c[] = "hello"
役に立ちましたか?

解決

c ++では、動的メモリ割り当てではありません。 delete [] は必要ありません。

あなたの例は基本的にこれのショートカットです:

char c[6]={'h','e','l','l','o','\0'};

他のヒント

C ++のルールは、 new [] を使用するときは常に delete [] を使用し、を使用するときは常に delete を使用することです新しい。例のように new を使用しない場合、 delete は必要ありません。

例では、 c 配列の6バイトは、関数内で宣言された場合、ヒープではなくスタックに割り当てられます。これらのバイトはスタック上にあるため、宣言された関数が戻るとすぐに消えます。

その宣言が関数の外部にある場合、これらの6バイトはグローバルデータ領域に割り当てられ、プログラムの全ライフタイムの間、残ります。

ヒープに何かを置くときにメモリを動的に割り当てます。ここでは、変数をスタックに割り当てています。 new演算子またはmalloc呼び出しを使用していた場合、ヒープに変数を配置することになります。

delete(w / new)またはfree(w / malloc)を使用して、ヒープのメモリを解放する必要があります。関数/メソッドが戻ると、スタックは自動的に解放されます。

いいえ、配列はコンパイル時にサイズ変更されます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top