そのアドレスを取るには、このようなコードを考えてみましょう。したがって、&*ptr
は同じ方法でメモリにアクセスしていません。それはなぜですか?そのための標準的なエントリがありますか?無効なポインタにアクセスすると
答えて
戻り値std::vector::end()
を参照解除すると、未定義の動作が発生します。あなたがそうしたら何が起こるのかを理解しようとすることは何の意味もありません。
http://en.cppreference.com/w/cpp/container/vector/endから:この要素は、プレースホルダとして機能
。アクセスしようとすると、未定義の動作が発生します。
Re。第二の部分は、私はC++ 11標準で見つけることができる唯一のものである:
1単項*
オペレータが間接を行う
5.3.1単項演算子:式れます適用されるのは、オブジェクト型へのポインタ、または関数型へのポインタであり、結果は、式が指すオブジェクトまたは関数を参照する左辺値です。式の型が「
T
へのポインタ、」結果の型は「T
」である[注:ポインタ不完全型(以外CVvoid
)に逆参照することができます。このようにして得られた左辺値は、限定された方法で(例えば、参照を初期化するために)使用することができる。この左辺値を prvalueに変換してはなりません。4.1を参照してください。 - エンドノート]
NULLポインタを逆参照の結果は不定であると思われます。
どちらの場合も、メモリにアクセスするのではなく、アドレスを計算することになります。そのため、コードが動作します。しかし、どちらの場合も、C++標準による未定義の動作です。最初の例は、実際には、標準ライブラリのDebugバージョンでアサーションの失敗を引き起こす可能性があります。
これは疑問です:その場合、標準ではこの区別(メモリとコンピューティングアドレスの比較)が行われますか? –
標準には区別がありませんが、どちらも未定義の動作です。しかし、実際には、プログラムがメモリの内容を読み取る必要がある場合にのみ、セグメンテーションが存在します。 – Eugene
- 1. ポインタを無効にするポインタの配列が無効です
- 2. 無効なポインタGTEST
- 3. ie8「無効なポインタ」
- 4. free()無効なポインタ
- 5. C++ realloc():無効なポインタ
- 6. strange free()無効なポインタC
- 7. 削除時に無効なポインタがクラッシュするが、別のポインタ
- 8. Golang、ポインタの参照が無効であるか無効なメモリアドレス
- 9. ポインタが無効になっています。アクセス違反の原因となるもの
- 10. クラスへのポインタの無効な無効化
- 11. FortranでMPI_Gatherを使用すると、ポインタとセグメンテーションフォルトが無効になる
- 12. デバッグのglibc)(フリー:無効なポインタ
- 13. C free()コールで無効なポインタ
- 14. アクセス:無効なUPDATEステートメント
- 15. Google APIにアクセスすると無効な付与
- 16. クラスエラーへの無効ポインタ
- 17. Cの構造体を無効にすると*ポインタ
- 18. Visual Studio 2010:プロジェクト設定を削除するときに無効なポインタ
- 19. アクセス時にmsgboxを無効にする
- 20. この無効なポインタはどこにありますか?
- 21. ** glibcの検出***無料():無効なポインタ:0x0000000000400b2c
- 22. Tensorflowのconv3d_transpose「Pythonの中***エラー:無料():無効なポインタ
- 23. Facebook API SDKアクセスを無効にする
- 24. Ctypes - Pythonから無効ポインタを渡す
- 25. 変換が無効ですか?ポインタへのconstポインタの代入
- 26. オブジェクトCのポインタ変換に無効な整数
- 27. 構造変数の初期化時に無効なポインタ
- 28. ポインタが無効です - なぜですか?
- 29. MSアクセス "Nullの無効な使用"
- 30. TFSチェックインポリシー - 無効なアクセス許可
"明らかに' auto val = * ptr; 'はsegfaultです。"それは?あなたは、コードが不完全であることを発見するのがはるかに容易になるので、セグメンテーションすることを望みます*未定義の振る舞い*(これは逆参照演算子をコンテナのエンドイテレータに適用したときに起こりました)それがセグメンテーションされたり、「働く」という外観を持っていたり、何か他のものがあるという保証はありません。振る舞いは* undefined *です。あなたは行動の定義を除いて*何かを排除することはできません。 – WhozCraig