C++プログラムでどのように変数を削除しますか?私は単純なint list[10];
を持っていると私はそれを削除し、int list[9]
に変更します。私はベクトルを使用しますが、私はまだあなたがこのような何かを宣言した場合は、それをC++でどのように変数を削除しますか?
答えて
を行う方法を知りたい:
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
などを使用します。
これは、変数の削除とは呼ばず、代わりに変数の型を再定義します。これはC++では単純に不可能です。いったん可変型が確立されると、それは変更できません。エミュレートまたはこの現象を回避するには、いくつかの方法があります
...
- は子スコープを作成し、異なる種類で同じ名前の新しい変数を定義します。
list
をint*
に切り替え、そのメモリをヒープに割り当てます。これは、タイプを変更することなく、異なるサイズに再定義するという効果があります。
あなたの配列は、その後、ヒープ上に割り当てられている場合:
int *L = new int[10];
delete[] L;
L = new int[9];
スタック上で宣言されたローカル変数を「削除」の概念はありません。
C++で配列を削除するには、delete[]
演算子を使用します。 this linkを参照してください。
あなたは気をつけたいです。あなたが持っているものは静的な配列です。 delete
またはdelete[]
を使用するときは、動的に割り当てられた変数(new
で作成したもの)にする必要があります。これを行うには:あなたnew
場合
int* list = new int[10];
//...Code...
delete[] list;
list = new int[9];
はdelete
に忘れてはいけません! (理想的には、あなたが言ったように、あなたが忘れることができないように管理された何かを使うべきです)。
誰もが私を打ち負かしていますが、記録のために、 'new'はヒープ上のものをどのように割り当てるかです(コンパイラはそれがどれほどか分からないので、実行時に得られるメモリです)。 – Crisfole
int list[10];
は静的なものです。変数として宣言されている配列はC++の静的オブジェクトであり、削除/作成することはできません...コンパイル時のことです。あなたが明示的に配列オブジェクトとして、あなたの配列を宣言する必要が
が、それはまだ宣言シームが、それはありません
int *list=new int[10];
を言う:新しいオペランドは、MEM-割り当てコードをトリガします)...もちろん
delete[] list;
、その後、(同じint
タイプの)に新しいを作るために、新たなオペランドを使用
、あなた: あなたが最初にそれを解放する必要が多かれ少なかれスペースを割り当てたい場合いつでもこれを行うことができます:
{
int list[10];
... 'list' has 10 elements ...
{
int list[9];
... 'list' has 9 elements ... other 'list' inaccessible
}
... 'list' 10 elements ... other 'list' non-existent.
}
あなたはなぜでしょうか想像できません。
- 1. PowerShellでどのようにアクセントを削除しますか?
- 2. WhereParametersをEntityDataSourceでどのように削除しますか?
- 3. networkxでどのようにノードを削除しますか?
- 4. Dev C++でこれをどのように削除できますか?
- 5. グローバル変数を削除するにはどうすればよいですか?
- 6. どのように変数をキャプチャしますか(C#)
- 7. どのように行をUITableViewから削除しますか?
- 8. RabbitMQからどのようにキューバインディングを削除しますか?
- 9. 「削除」はどのようにjavascriptで機能しますか?
- 10. ドッカーボリュームの内容をどのように削除しますか?
- 11. デフォルトで引数をどのように削除できますか?
- 12. HBaseはどのように行を削除しますか?
- 13. どのように連続削除ボタンをプログラムしますか?
- 14. WordPressデータベースユーザーをどのように削除しますか?
- 15. CDIはどのようにステートフルセッションBeanを削除しますか?
- 16. AWS EMRクラスタをどのように削除しますか?
- 17. Hibernateはオブジェクトをどのように削除(obj)しますか?
- 18. footableどのように検索ボックスを削除しますか
- 19. FTPClientはどのようにディレクトリを削除できますか?
- 20. IntelliJ IDEAのハイパーリンクエラーストライプはどのように削除しますか?
- 21. 「無料/削除」はどのように機能しますか?
- 22. カスケード削除エンティティフレームワーク4.どのようにしますか?
- 23. SSASキューブはどのように削除しますか?
- 24. ノードはリンクリストでどのように削除されますか?
- 25. どのようにCでポインタを使って変数をインクリメントしますか?
- 26. C#でJSONコンテンツをどのように変更しますか?
- 27. 目的のcのテーブルビューで複数のセクションを削除するにはどうすればよいですか?
- 28. どのように変数リストから名前を除外しますか?
- 29. jqueryを使用して変数をランダムに削除するにはどうすればよいですか?
- 30. どのようにVisual Studio Cで変数を保存しますか
この変数はどのように作成しましたか?新しいかどうか?なぜあなたは単にそのint [10]を使うことができないのですか?あなたの質問は、おそらくあなたが話していることを知らないことを示しています。その場合、あなたはどこから来ましたか? Java?またはPython? Iff Javaの場合、この質問はどういうわけか「intを削除するにはどうすればよいですか?charに変更したいのですが」あなたが知っているプログラミング言語で何をしたいのかを記述してください。そうすれば誰かがあなたにC++の代替案を表示できます。私の答えはだったでしょう:ちょうどそれをキャスト、sizeof演算子の結果は型に依存します。 – comonad