1

簡単な質問: またはする必要がありますdeletedelete [] c? 言語は関係ありますか?

char c[] = "hello"
4

4 に答える 4

12

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

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

char c[6]={'h','e','l','l','o','\0'};
于 2009-01-08T03:15:00.123 に答える
12

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

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

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

于 2009-01-08T03:24:19.310 に答える
2

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

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

于 2009-01-08T04:21:38.477 に答える
1

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

于 2009-01-08T03:18:23.160 に答える