2010-12-02 9 views
-1

C++プログラムでどのように変数を削除しますか?私は単純なint list[10];を持っていると私はそれを削除し、int list[9]に変更します。私はベクトルを使用しますが、私はまだあなたがこのような何かを宣言した場合は、それをC++でどのように変数を削除しますか?

+1

この変数はどのように作成しましたか?新しいかどうか?なぜあなたは単にそのint [10]を使うことができないのですか?あなたの質問は、おそらくあなたが話していることを知らないことを示しています。その場合、あなたはどこから来ましたか? Java?またはPython? Iff Javaの場合、この質問はどういうわけか「intを削除するにはどうすればよいですか?charに変更したいのですが」あなたが知っているプログラミング言語で何をしたいのかを記述してください。そうすれば誰かがあなたにC++の代替案を表示できます。私の答えはだったでしょう:ちょうどそれをキャスト、sizeof演算子の結果は型に依存します。 – comonad

答えて

6

を行う方法を知りたい:

int list[10]; 

それを「削除」する方法はありません。静的に割り当てられた記憶領域を持つグローバル変数か、スタック上の記憶域を持つローカル変数です。

私はあなたが達成しようとしているのかを正確に知らないが、多分このようなものは、あなたがそれを把握するのに役立ちます:あなたは、あなたの質問に示唆したよう

int *list = new int[10]; // allocate a new array of 10 ints 
delete [] list;   // deallocate that array 
list = new int[9];  // allocate new array with 9 ints 

は、あなたはほとんど常にオフに良くなります生C字型配列を使用するのではなく、std::vector,std::listなどを使用します。

3

これは、変数の削除とは呼ばず、代わりに変数の型を再定義します。これはC++では単純に不可能です。いったん可変型が確立されると、それは変更できません。エミュレートまたはこの現象を回避するには、いくつかの方法があります

...

  • は子スコープを作成し、異なる種類で同じ名前の新しい変数を定義します。
  • listint*に切り替え、そのメモリをヒープに割り当てます。これは、タイプを変更することなく、異なるサイズに再定義するという効果があります。
1

あなたの配列は、その後、ヒープ上に割り当てられている場合:

int *L = new int[10]; 
delete[] L; 
L = new int[9]; 

スタック上で宣言されたローカル変数を「削除」の概念はありません。

1

C++で配列を削除するには、delete[]演算子を使用します。 this linkを参照してください。

あなたは気をつけたいです。あなたが持っているものは静的な配列です。 deleteまたはdelete[]を使用するときは、動的に割り当てられた変数(newで作成したもの)にする必要があります。これを行うには:あなたnew場合

int* list = new int[10]; 
//...Code... 
delete[] list; 
list = new int[9]; 

deleteに忘れてはいけません! (理想的には、あなたが言ったように、あなたが忘れることができないように管理された何かを使うべきです)。

+0

誰もが私を打ち負かしていますが、記録のために、 'new'はヒープ上のものをどのように割り当てるかです(コンパイラはそれがどれほどか分からないので、実行時に得られるメモリです)。 – Crisfole

0

int list[10];は静的なものです。変数として宣言されている配列はC++の静的オブジェクトであり、削除/作成することはできません...コンパイル時のことです。あなたが明示的に配列オブジェクトとして、あなたの配列を宣言する必要が

が、それはまだ宣言シームが、それはありません

int *list=new int[10]; 
を言う:新しいオペランドは、MEM-割り当てコードをトリガします)...もちろん

delete[] list; 

、その後、(同じintタイプの)に新しいを作るために、新たなオペランドを使用

-1

、あなた: あなたが最初にそれを解放する必要が多かれ少なかれスペースを割り当てたい場合いつでもこれを行うことができます:

{ 
    int list[10]; 
    ... 'list' has 10 elements ... 

    { 
    int list[9]; 
    ... 'list' has 9 elements ... other 'list' inaccessible 
    } 
    ... 'list' 10 elements ... other 'list' non-existent. 
} 

あなたはなぜでしょうか想像できません。

関連する問題