คำถามติดแท็ก null-pointer



2
เมื่อใดที่การเรียกใช้ฟังก์ชันสมาชิกบนอินสแตนซ์ว่างจะทำให้เกิดพฤติกรรมที่ไม่ได้กำหนด
พิจารณารหัสต่อไปนี้: #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) } เราคาดว่า(b)จะขัดข้องเนื่องจากไม่มีสมาชิกที่เกี่ยวข้องxสำหรับตัวชี้ค่าว่าง ในทางปฏิบัติ(a)ไม่ผิดพลาดเนื่องจากthisไม่เคยใช้ตัวชี้ เนื่องจาก(b)dereferences thisตัวชี้ ( …

8
ไม่พบ @Nullable ใน javax.annotation *
ฉันต้องการใช้บันทึกย่อที่จะกำจัด@Nullable NullPointerExceptionsผมพบว่าบทเรียนบางอย่างในสุทธิผมสังเกตเห็นว่าคำอธิบายประกอบนี้มาจากแพคเกจjavax.annotation.Nullable; แต่เมื่อฉันนำเข้ามันเกิดข้อผิดพลาดในการคอมไพล์: ไม่พบสัญลักษณ์

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 …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.