การทำงานกับตัวบ่งชี้ C + +: อันตรายที่อาจเกิดขึ้นและอันตราย

หนึ่งในเครื่องมือที่มีประสิทธิภาพที่สุดสำหรับการเขียนโปรแกรม C + + คือเมตริก การใช้ดัชนี C + + คุณสามารถเข้าถึงสถานที่หน่วยความจำต่างๆที่แจกจ่ายได้ที่การรวบรวมและดำเนินการโปรแกรม นี้จะให้จำนวนประมาณของความยืดหยุ่นและความลึกของโปรแกรมเขียนและเพิ่มอีกมิติหนึ่งของกระบวนทัศน์เชิงวัตถุ

อย่างไรก็ตามในขณะที่เราทุกคนรู้จักการ์ตูนซูเปอร์ฮีโร่ของเด็ก ๆ ของเรา: เขามีความรับผิดชอบที่ยิ่งใหญ่และมีอำนาจมหาศาล (พระเจ้าซึ่งเป็นชนชั้นดั้งเดิม) ดังนั้น C + + เป็นดาบสองคม ปัญหาเมตริกเหล่านี้บางส่วนหรือ เมตริก มีการรั่วไหลของหน่วยความจำหรือหน่วยความจำที่ไม่สามารถเข้าถึงและตัวบ่งชี้ที่แขวนได้

บทความนี้เป็นตัวชี้หลักสองสามข้อและขั้นตอนที่โปรแกรมเมอร์ C + + ต้องทำเพื่อหลีกเลี่ยงอันตรายดังกล่าว

อันตรายจากตัวชี้

อันตรายจากตัวบ่งชี้หลัก:

1. Memory Lock
2. ตัวชี้วัดความวุ่นวาย
3. Bad Pointer

การรั่วไหลของหน่วยความจำ:
หน่วยความจำล้มเหลวเป็นรหัส C + + ร่วมกันมากที่สุด โดยทั่วไปสิ่งนี้เกิดขึ้นเมื่อตัวชี้ชี้ไปที่การ์ดหน่วยความจำบอกเราว่า A & # 39; ถูกจัดเรียงเป็นกลุ่มหน่วยความจำอื่น ๆ โดยพูดว่า: & # 39; B & เนื่องจากวิธีเดียวที่จะเข้าถึงบล็อคหน่วยความจำเข้าถึงได้โดยตรงจากจุดนั้นสถานที่แรก A จะกลายเป็นหน่วยความจำที่ใช้ไม่ได้อย่างสมบูรณ์ซึ่งจะนำไปสู่การรั่วไหลของหน่วยความจำ เนื่องจากคอมไพเลอร์ไม่ใช้หน่วยความจำร่วมกัน (โปรแกรมเมอร์ต้องใช้คีย์การลบ) และเมื่อตัวชี้ชี้ไปยังตำแหน่งหน่วยความจำ B จะทำให้หน่วยความจำและทรัพยากรของระบบถูกคัดลอก ตัวอย่าง:
int * ptr = nullptr;
ptr = new int;
* ptr = 5;
ptr = new int;

นี่คือตำแหน่งหน่วยความจำที่เก็บทั้ง # ตอนนี้คุณไม่สามารถเข้าถึงตัวชี้ & # 39; ptr & # 39; ตอนนี้ชี้ไปที่ตำแหน่งหน่วยความจำอื่น เป็นผลให้พื้นที่ที่ระบบใช้เก็บจำนวนเต็มจะสูญหายไปจนกว่าจะสิ้นสุดการทำงานของโปรแกรม

เพื่อหลีกเลี่ยงการรั่วไหลของหน่วยความจำโปรดตรวจสอบว่าข้อความ "delete" & # 39; และคำหลักใหม่ในโปรแกรมจะเท่ากันเนื่องจากทุกครั้งที่คุณแชร์รายการใหม่ "ใหม่" คุณจะต้องแบ่งคำว่า "delete"

Hanging Pointer:
ตัวชี้ที่แขวนอยู่เป็นตัวชี้ที่ชี้ไปยังตำแหน่งที่ไม่ใช่ส่วนหนึ่งของโปรแกรมในกรณีนี้โปรแกรมเมอร์ไม่ได้แสดงตัวชี้ไปยังตำแหน่งหน่วยความจำอื่นใน "delete" statement

ตัวอย่าง: 19659009] โปรดทราบว่าที่นี่หน่วยความจำทั้งหมดที่เชื่อมโยงกับตัวชี้ถูกลบแล้ว แต่เรายังคงพยายามดึงข้อมูล ดัชนีแย่:
มักสร้างตัวชี้เมื่อสร้างขึ้นมิฉะนั้นจะเป็นตัวบ่งชี้ที่ไม่ดีและหน่วยความจำจะอยู่ในหน่วยความจำถ้าคุณไม่เริ่มตัวชี้นี้คุณอาจประสบปัญหาระบบล้มเหลว เนื่องจากตัวชี้ที่ไม่ได้เตรียมใช้งานชี้ไปยังตำแหน่งหน่วยความจำแบบสุ่มตำแหน่งนี้อาจเป็นที่ตั้งหน่วยความจำที่ใช้โดยตัวชี้อื่นซึ่งนำไปสู่ปัญหาที่ใหญ่กว่าในโปรแกรม

ตัวอย่าง:
int * ptr;
cout << ptr;

โดยปกติแล้วคุณต้องเริ่มต้นเป็น NULL และค่าอื่น ๆ ในภายหลังในโปรแกรม มาตรฐานใหม่สร้าง # nullptr & # 39; เพื่อการนี้ ตัวอย่าง:
int * ptr = nullptr;

ง่ายมากที่จะสังเกตเห็นว่าแอป C ++ ควรได้รับการดูแลด้วยความระมัดระวังและระมัดระวัง มีหลายวิธีในการกำหนดตารางเวลาและข้อบกพร่องในขณะที่ใช้เมตริก แต่ถ้าคุณพยายามหลีกเลี่ยงเมตริกที่กล่าวมาข้างต้นคุณควรจะตกลง

Source by Raza Ahmad

Leave a Reply

Your email address will not be published. Required fields are marked *