私はポインタであるクラスにデータメンバーを持っています。また、私はダイナミック配列の目的のために、このポインタを動的に割り当てるためのsetter関数を持っています。新しい値を設定する前に、メモリリークを避けるためにこのポインタを削除する必要があります。どのように初期化されていない場合、私は新しい値を設定する前に、ポインタのメモリを削除する必要はありませんように、このポインタが初期化されているかどうかを確認するのだろうか。C++のクラスのデータメンバーとしてのポインタが初期化されているかどうかを確認するにはどうすればよいですか?
答えて
2つのオプションがあります。まず、すべてを手作業で行い、コンストラクタのnullptr
に設定します。新しいメモリを割り当てる前に、それがnullptr
かどうかをチェックし、そうでない場合は削除してください。代わりにstd::unique_ptr
のようなスマートポインタを使用することをお勧めします。あなたはそれを新しいポインタに設定する必要があるたびにreset
を呼び出すことができ、メモリリークについて心配する必要はありません。以前に割り当てられたメモリがあれば削除します。
最初のシナリオでは、削除する前にNULLを確認する必要はありません。 'delete'はヌルポインタを正しく扱います。 –
@PeteBecker 1.まだ 'nullptr'に設定する必要がありますが、' delete'の前にその無効性を確認する必要はありません。 2.私のポインタは将来動的配列になるかもしれませんし、 'delete [] a_pointer;'は 'nullptr'でも正しく動作しますか? – Nicholas
@grigor 'std :: unique_ptr'は素晴らしく聞こえますが、このマジック' std :: unique_ptr'を使うためのパフォーマンスのコスト(速度の低下を意味します)があるのだろうか? – Nicholas
- 1. C# - 変数が初期化されているかどうかの確認
- 2. iOSアプリケーションですべてのプリミティブがnullで初期化されていることを確認するにはどうすればよいですか?
- 3. クラスが初期化されているかどうかを知るには?
- 4. ネットパイプサービスがリッスンしているかどうかを確認するにはどうすればよいですか
- 5. Pygameでミキサーシステムが初期化されているかどうかを確認するには?
- 6. ポップアップページが開いているかどうかを確認するにはどうすればよいですか?
- 7. このようなマップをC++で初期化するにはどうすればよいでしょうか?
- 8. ブラウザウィンドウがSilverlight/C#で最大化されているかどうかを確認するにはどうすればよいですか?
- 9. MEFを使用してクラスのグループを初期化するにはどうすればよいですか?
- 10. datagridviewの最初のセルがcelldoubleclickでダブルクリックされているかどうかを確認するにはどうすればよいですか?
- 11. スタアラリングが同期していることを確認するにはどうすればよいですか?
- 12. chrome WebkitSpeechRecognitionが初期化されているかどうかを確認しますか?
- 13. 定数が別のクラスから定義されているかどうかを確認するにはどうすればよいですか?
- 14. アプリがバックグラウンドで実行されているか、アンドロイドを殺しているかどうかを確認するにはどうすればよいですか?
- 15. ユーザがルータで認証されているかどうかを非同期で確認するにはどうすればいいですか?
- 16. Javaでは、コレクションに特定のクラスのインスタンスが含まれているかどうかを確認するにはどうすればよいですか?
- 17. C++データ型を初期化できるクラスを作成するにはどうすればよいですか?
- 18. PyMongoを使用してユーザーがデータベースで認証されているかどうかを確認するにはどうすればよいですか?
- 19. 関数内のポインタの配列のサイズを初期化するにはどうすればよいですか?
- 20. エラーが返されたかどうかを確認するにはどうすればよいですか?
- 21. リンクが訪問されたかどうかを確認するにはどうすればよいですか?
- 22. データベースのチェックインをして、列の値が複数回フラッシュされているかどうかを確認するにはどうすればよいですか?
- 23. ノード(クラスのインスタンス)がクリックされているかどうかを確認する
- 24. 初期化されていない値を避けるにはどうすればよいですか?
- 25. Primitiveが初期化されていないかどうかを確認する簡単な方法?
- 26. CALayerが他のCALayersによって完全にカバーされているかどうかを確認するにはどうすればよいですか?
- 27. Java Streamの収集(Collectors.toMap)が並列化されているかどうかを確認するにはどうすればよいですか?
- 28. デルファイを使用しているシステムにMSXML6がインストールされているかどうかを確認するにはどうすればよいですか?
- 29. Objective-CのMac OSXマシンにNSFontがインストールされているかどうかを確認するにはどうすればよいですか?
- 30. このポインタの配列を初期化するにはどうすればよいですか?
が使用されていないときに 'nullptr'に設定されているか、まともなことをして、' unique_ptr'を使ってあなたのライフタイムを処理してください。ちなみに、 'nullptr'で' delete'を呼び出すと、何もしません。 – jaggedSpire
メンバのデフォルト値を 'nullptr'として設定することを意味しますか?これがC++でどのように行われているのだろうか?@ jaggedSpire – Nicholas
クラスメンバ初期化、メンバ初期化子リスト、またはコンストラクタ本体で 'nullptr'に設定してください – jaggedSpire