Hell'o、 私は、ポインターであるメンバーベリッシャーを持つクラスを持っています。メンバポインタを初期化せずにこのクラスのインスタンスを作成すると(何らかのメモリまたはnullを指している - 何でも)、このポインタはメモリ内で行われますか?たとえば、ボタンのインスタンスを作成しようとしていますが、ユーザーはクリックに効果があるかどうかを判断できます。つまり、ボタンクラスはサウンド用のメモリを予約してはいけません(ユーザーが選択した場合)。ポインタはメモリ内で発生しますか?
1
A
答えて
6
ポインタ自体のメモリは確保されますが、ポインタが指すオブジェクトのメモリは予約されません。
この場合、オブジェクトのコンストラクタでポインタにnullptr
(またはC++ 03以前を使用している場合はNULL
)の値を割り当てる必要がありますが、デザインを変更してオブジェクトを変更することを検討します不必要な(例えば、ボタン付きサウンドとボタンなしサウンドの2つのクラスを持ち、何らかの継承を使用するなど)。 nullptr
を割り当てることは、ポインタが実際に何かを指し示しているかどうかをチェックするのに便利な値です。現代のデスクトップシステムでは、誤ってアクセスした場合にクラッシュする可能性が非常に高くなります(実際には保証されません) 。クラッシュはあなたのプログラムが奇妙で予期しないことをやっているよりも優れているかもしれません。おそらくデータが壊れていて、永遠に追跡することができます!
ポインタ自体のスペースはかなり小さくなります(64ビットIntelアーキテクチャでは8バイトと思われますが、これはもちろん保証されていません)。
0
低レベルでは、Cのポインタは実際には整数です。コンパイラでは、整数よりも多くのことを行うことができますが、整数へのポインタや逆もまた可能です。
そうですね、あなたのポインタはメモリ内の領域(整数のサイズ、おそらく32ビットで4バイト、64ビットで8バイト)を占有します。
好きではない場合は、別のデザインを見つける必要があります。
関連する問題
- 1. BST内のメモリとポインタ
- 2. ここでnullポインタ例外が発生しますか?
- 3. STM32 DMAメモリからメモリへの転送は一度だけ発生します。
- 4. プロテクトされたメモリの例外は、デバッグなしで発生しますが、デバッグなしで発生します。
- 5. メモリ内ウェブアプリケーションの複数のコレクションでエラー404が発生しました
- 6. 自動生成スキーマはメモリ内でのみ機能します
- 7. ポインタにセグメンテーションフォルトが発生するのはなぜですか?
- 8. ポインタでないテンプレートクラスの例外を発生させますか?
- 9. ポインタでエラーが発生する
- 10. asp.netアプリケーションでnullポインタ例外が発生しています
- 11. in sql、固定長データ型はどのようにメモリ内で発生しますか?
- 12. メモリ内のポインタと整数表現
- 13. メモリ不足エラーが発生するのはなぜですか?
- 14. writeCharacteristicでNULLポインタ例外が発生しました
- 15. ImageButton.setOnClickListenerでNULLポインタ例外が発生しました
- 16. firebaseのgetEmail()でNULLポインタ例外が発生しました
- 17. MvxImageView.SetImageBitmapが原因で「メモリ違反」が発生しました
- 18. XML解析でメモリ不足が発生しました
- 19. メモリのVisual Studioでエラーが発生しましたが、
- 20. メモリ位置エラーでcv ::例外が発生しました
- 21. ポインタをリダイレクトするとメモリリークが発生しますか?私は2つのポインタき
- 22. 空ポインタのメモリ
- 23. nullポインタ例外が発生しています
- 24. 新しい値にポインタを代入しようとするとメモリの問題が発生する
- 25. このポインタをコンストラクタに渡すときにコンパイラエラーが発生しましたか?
- 26. 内部メモリからPDFファイルを読み込む際にエラーが発生しましたか?
- 27. ループ内でデータを送信すると、mallocのメモリ破損が発生する
- 28. ポインタをポインタから逆参照する際に問題が発生しました
- 29. テンプレート関数ポインタでリンカエラーが発生するのはなぜですか?
- 30. realloc()は古いメモリを解放します(古いメモリが他のメモリへのポインタである場合)?
はい。通常、ポインタは32または64ビット幅です。 –
しかし、それはサウンドオブジェクトのスペースを取らないでしょう。 – derM