そのアドレスを取るには、このようなコードを考えてみましょう。したがって、&*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. C++無効なポインタ
- 3. 無効なポインタGTEST
- 4. free()無効なポインタ
- 5. ie8「無効なポインタ」
- 6. strange free()無効なポインタC
- 7. C++ realloc():無効なポインタ
- 8. 削除時に無効なポインタがクラッシュするが、別のポインタ
- 9. MS4:無料()無効なポインタ0xb74e74e0 ***
- 10. BisonでASTをビルドするときに無効なポインタ
- 11. Golang、ポインタの参照が無効であるか無効なメモリアドレス
- 12. ポインタが無効になっています。アクセス違反の原因となるもの
- 13. クラスへのポインタの無効な無効化
- 14. FortranでMPI_Gatherを使用すると、ポインタとセグメンテーションフォルトが無効になる
- 15. 別デルファイ無効なポインタ操作
- 16. C free()コールで無効なポインタ
- 17. デバッグのglibc)(フリー:無効なポインタ
- 18. *** `./pw 'のエラー:free():無効なポインタ:0x0000000000602200 ***
- 19. のmalloc:***オブジェクト0x1746ea3feのエラー:無効なポインタ
- 20. std :: vector、std :: moveとポインタの無効化
- 21. アクセス:無効なUPDATEステートメント
- 22. ハンドル、無効ポインタ、C++のオブジェクト
- 23. クラスエラーへの無効ポインタ
- 24. python ctypes - ラップ無効ポインタ
- 25. Google APIにアクセスすると無効な付与
- 26. Cの構造体を無効にすると*ポインタ
- 27. Visual Studio 2010:プロジェクト設定を削除するときに無効なポインタ
- 28. アクセス時にmsgboxを無効にする
- 29. 型の無効なオペランドクラスポインタとクラスのバイナリ演算子へのポインタ+
- 30. この無効なポインタはどこにありますか?
"明らかに' auto val = * ptr; 'はsegfaultです。"それは?あなたは、コードが不完全であることを発見するのがはるかに容易になるので、セグメンテーションすることを望みます*未定義の振る舞い*(これは逆参照演算子をコンテナのエンドイテレータに適用したときに起こりました)それがセグメンテーションされたり、「働く」という外観を持っていたり、何か他のものがあるという保証はありません。振る舞いは* undefined *です。あなたは行動の定義を除いて*何かを排除することはできません。 – WhozCraig