ฉันพบว่าสิ่งนี้จะช่วยได้เล็กน้อยเหมือนในประสบการณ์ของฉันเมื่อผู้คนเข้าถึงการจัดสรรหน่วยความจำที่เป็นอิสระมันเกือบทุกครั้งเพราะมีตัวชี้อื่นอยู่ จากนั้นมันก็ขัดแย้งกับมาตรฐานการเข้ารหัสส่วนบุคคลอื่นซึ่งก็คือ "หลีกเลี่ยงความยุ่งเหยิงที่ไร้ประโยชน์" ดังนั้นฉันจึงไม่ทำตามที่ฉันคิดว่ามันไม่ค่อยช่วยและทำให้รหัสอ่านน้อยลงเล็กน้อย
อย่างไรก็ตาม - ฉันจะไม่ตั้งค่าตัวแปรให้เป็นโมฆะหากตัวชี้ไม่ควรใช้อีกครั้ง แต่บ่อยครั้งที่การออกแบบระดับที่สูงกว่าทำให้ฉันมีเหตุผลที่จะตั้งค่าให้เป็นโมฆะ ตัวอย่างเช่นหากตัวชี้เป็นสมาชิกของชั้นเรียนและฉันได้ลบสิ่งที่ชี้ไปแล้ว "สัญญา" ถ้าคุณชอบของชั้นเรียนคือสมาชิกที่จะชี้ไปที่สิ่งที่ถูกต้องได้ตลอดเวลาดังนั้นมันจะต้องถูกตั้งค่าเป็นโมฆะ ด้วยเหตุผลนั้น ความแตกต่างเล็กน้อย แต่ฉันคิดว่าสำคัญ
ใน c ++ เป็นสิ่งสำคัญที่จะต้องคิดอยู่เสมอว่าใครเป็นเจ้าของข้อมูลนี้เมื่อคุณจัดสรรหน่วยความจำบางส่วน (ยกเว้นว่าคุณกำลังใช้พอยน์เตอร์สมาร์ท แต่จำเป็นต้องมีความคิดบางอย่าง) และกระบวนการนี้มีแนวโน้มที่จะนำไปสู่พอยน์เตอร์โดยทั่วไปเป็นสมาชิกของบางคลาสและโดยทั่วไปคุณต้องการให้คลาสอยู่ในสถานะที่ถูกต้องตลอดเวลาและวิธีที่ง่ายที่สุดในการทำเช่นนั้นคือตั้งค่าตัวแปรสมาชิกเป็น NULL เพื่อระบุว่า เพื่ออะไรตอนนี้
รูปแบบที่พบบ่อยคือการตั้งค่าทุกตัวชี้สมาชิกของเว็บไซต์เพื่อโมฆะในตัวสร้างและมีการโทร destructor ลบเกี่ยวกับตัวชี้ใด ๆ เพื่อให้ข้อมูลว่าการออกแบบของคุณว่าชั้นเรียนที่เป็นเจ้าของ ชัดเจนในกรณีนี้คุณต้องตั้งค่าตัวชี้เป็น NULL เมื่อคุณลบบางสิ่งเพื่อระบุว่าคุณไม่ได้เป็นเจ้าของข้อมูลใด ๆ มาก่อน
ดังนั้นเพื่อสรุปใช่ฉันมักจะตั้งตัวชี้ไปที่ NULL หลังจากลบบางสิ่งบางอย่าง แต่มันเป็นส่วนหนึ่งของการออกแบบที่มีขนาดใหญ่ขึ้นและความคิดเกี่ยวกับผู้ที่เป็นเจ้าของข้อมูลมากกว่าเนื่องจากการสุ่มสี่สุ่มห้าตามกฎมาตรฐานการเข้ารหัส ฉันจะไม่ทำเช่นนั้นในตัวอย่างของคุณเพราะฉันคิดว่าไม่มีประโยชน์ที่จะทำเช่นนั้นและมันเพิ่ม "ความยุ่งเหยิง" ซึ่งในประสบการณ์ของฉันมีหน้าที่รับผิดชอบต่อข้อผิดพลาดและรหัสที่ไม่ดีเช่นเดียวกับสิ่งนี้
ptr == NULL
ก่อนทำอะไรกับมัน ถ้าคุณไม่ลบพอยน์เตอร์พอยน์เตอร์ที่ว่างคุณจะได้รับptr != NULL
แต่ก็ยังใช้พอยน์เตอร์ไม่ได้