[解決済み] "メモリが読めない "を回避する方法
2022-02-25 21:31:36
質問
構造体があります。
struct a {
a(){};
a(int one,int two): a(one),b(two){};
int a;
int b;
int c;
}
a * b;
cout << b->c;
そして、時々、読みたくなる(例)。
c
という値で、デバッガではこの値は
'unable to read memory'
その後、私のプログラムはクラッシュしました。
さて、ではその値が読めるかどうかをチェックするにはどうしたらいいでしょうか?
よろしくお願いします。
解決方法は?
ポインターが何かを指すように初期化していないので、無効です。一般に、ポインタが有効なオブジェクトを指しているかどうかをテストすることはできません。ポインタが有効なオブジェクトを指しているかどうかを確認するのは、あなた次第です。
a obj(1,2); // an object
a * b = &obj; // a pointer, pointing to obj;
cout << b->a; // OK: b points to a valid object
ポインターを作ることができます ヌル を指し示す必要がない場合。しかし、NULLポインタをテストすることは可能です。
a * b = nullptr; // or 0, in ancient dialects
if (b) cout << b->a; // OK: test prevents dereferencing
cout << b->a; // ERROR: b is null
しかし、ポインタが初期化されていなかったり、破棄されたオブジェクトを指していたりして、NULLではないが無効であるような状況では役に立ちませんので、ご注意ください。
一般に、ポインターは実際に必要なとき以外は避け、必要なときに無効なポインターを使わないように注意しましょう。また、ポインターを使用する場合は、無効なポインターを使用しないように注意してください。
a b(1,2); // an object
cout << b.a; // OK: b is a valid object
関連
-
[解決済み] 文字列の単語を反復処理するにはどうすればよいですか?
-
[解決済み] 1ビットのセット、クリア、トグルはどのように行うのですか?
-
[解決済み] C++11では、標準化されたメモリモデルが導入されました。その意味するところは?そして、C++プログラミングにどのような影響を与えるのでしょうか?
-
[解決済み] Linux上で動作するC++コードのプロファイリングを行うにはどうすればよいですか?
-
[解決済み] 8192個の要素にループをかけると、プログラムが遅くなるのはなぜですか?
-
[解決済み] 1サイクルあたり4FLOPの理論上の最大値を達成するにはどうすればよいですか?
-
[解決済み] std::stringをintに変換するにはどうしたらいいですか?
-
[解決済み】画像処理。コカ・コーラ缶」認識のためのアルゴリズム改良
-
[解決済み] Intel CPU の _mm_popcnt_u64 で、32 ビットのループカウンターを 64 ビットに置き換えると、パフォーマンスが著しく低下します。
-
[解決済み】C++のコード/プロジェクトでメモリリークを見つけるには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】C++ クラスヘッダが含まれているときに「不明な型」があるのはなぜですか?重複
-
[解決済み】C++でint型に無限大を設定する
-
[解決済み】クラステンプレートの引数リストがない
-
[解決済み】抽象クラス型の無効なnew-expression
-
[解決済み] error: 'if' の前に unqualified-id を期待した。
-
[解決済み】C++の変数はイニシャライザーを持っているが、不完全な型?
-
[解決済み】cc1plus:エラー:g++で認識されないコマンドラインオプション"-std=c++11"
-
[解決済み】浮動小数点例外エラーが発生する: 8
-
[解決済み】VC++の致命的なエラーLNK1168:書き込みのためにfilename.exeを開くことができません。
-
[解決済み】変数やフィールドがvoid宣言されている