タグ付けされた質問 「null-pointer」



2
nullインスタンスでメンバー関数を呼び出すと、未定義の動作が発生するのはいつですか?
次のコードを検討してください。 #include <iostream> struct foo { // (a): void bar() { std::cout << "gman was here" << std::endl; } // (b): void baz() { x = 5; } int x; }; int main() { foo* f = 0; f->bar(); // (a) f->baz(); // (b) } nullポインターに(b)対応するメンバーがないため、クラッシュすることが予想されxます。実際に(a)は、thisポインタは使用されないため、クラッシュしません。 ので(b)逆参照thisポインタ((*this).x = 5;)、およびthisnullであるヌルを逆参照することは、常に未定義の動作と言われているように、プログラムは、未定義の動作に入ります。 (a)未定義の動作につながりますか?両方の関数(およびx)が静的である場合はどうなりますか?

8
javax.annotation。*内に@Nullableが見つかりません
@Nullable アノテーションを使って排除したいNullPointerExceptions。ネット上でいくつかのチュートリアルを見つけましたが、この注釈がパッケージからのものであることに気付きましたjavax.annotation.Nullable。しかし、インポートするとコンパイルエラーが発生します:シンボルが見つかりません

1
Rustのオプションタイプのオーバーヘッドは何ですか?
Rustでは、参照がnullになることはないため、リンクリストなど、実際にnullが必要な場合は、次のOptionタイプを使用します。 struct Element { value: i32, next: Option<Box<Element>>, } 単純なポインタと比較して、メモリ割り当てと逆参照の手順に関して、これにはどのくらいのオーバーヘッドが含まれますか?コンパイラ/ランタイムに、同じ構造を使用して非コアライブラリに自分でOption実装Optionしたりenum、ポインタをベクトルでラップしたりする場合よりも、コストをかけずに、またはコストを抑えた「魔法」がありますか?

4
memcpy(0,0,0)を実行しても安全であることが保証されていますか?
私はC標準にあまり精通していないので、ご容赦ください。 規格で保証されているかどうか知りたいのですが memcpy(0,0,0)安全が。 私が見つけた唯一の制限は、メモリ領域が重複している場合、動作が定義されていないことです... しかし、ここでメモリ領域が重複していると見なすことができますか?

1
C ++ nullptr実装はどのように機能しますか?
仕組みを知りたいnullptrです。規格N4659およびN4849は次のように述べています。 タイプが必要std::nullptr_tです。 そのアドレスを取ることはできません。 これは、ポインターおよびメンバーへのポインターに直接変換できます。 sizeof(std::nullptr_t) == sizeof(void*); への変換boolはfalseです。 その値は、と同じように整数型に変換できます(void*)0が、逆方向には変換できません。 したがって、基本的にはと同じ意味を持つ定数ですが、(void*)0型が異なります。std::nullptr_t私のデバイスでの実装を見つけました。それは次のとおりです。 #ifdef _LIBCPP_HAS_NO_NULLPTR _LIBCPP_BEGIN_NAMESPACE_STD struct _LIBCPP_TEMPLATE_VIS nullptr_t { void* __lx; struct __nat {int __for_bool_;}; _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR nullptr_t() : __lx(0) {} _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR nullptr_t(int __nat::*) : __lx(0) {} _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR operator int __nat::*() const {return 0;} template <class _Tp> _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR operator …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.