簡単な質問: またはする必要がありますdelete
かdelete []
c
? 言語は関係ありますか?
char c[] = "hello"
簡単な質問: またはする必要がありますdelete
かdelete []
c
? 言語は関係ありますか?
char c[] = "hello"
動的メモリ割り当てではない c++ では。いいえdelete[]
必要ありません。
あなたの例は基本的にこれのショートカットです:
char c[6]={'h','e','l','l','o','\0'};
C++ のルールは、 を使用するときはdelete[]
常に を使用しnew[]
、を使用するときはいつでも をdelete
使用することnew
です。new
あなたの例のように、を使用しない場合は、delete
何もする必要はありません。
あなたの例では、配列の 6 バイトはc
、関数内で宣言されている場合、ヒープではなくスタックに割り当てられます。これらのバイトはスタック上にあるため、宣言されている関数が戻るとすぐに消えます。
その宣言が関数の外にある場合、それらの 6 バイトはグローバル データ領域に割り当てられ、プログラムの存続期間全体にわたって残ります。
何かをヒープに置くときに動的にメモリを割り当てます。ここでは、変数をスタックに割り当てています。new 演算子または malloc 呼び出しを使用していた場合は、変数をヒープに置くことになります。
ヒープ上のメモリを解放するには、delete (w/new) または free (w/malloc) を使用する必要があります。関数/メソッドが戻ると、スタックは自動的に解放されます。
いいえ、配列はコンパイル時にサイズ調整されます。