ความเป็นไปได้ที่ซ้ำกัน:
การตั้งค่าตัวแปรเป็น NULL หลังจากว่าง < /ก>
ฉันกำลังเรียนรู้เกี่ยวกับแนวทางปฏิบัติในการเขียนโปรแกรม C ที่ดีและเพื่อนของฉันบอกให้ฉันตั้งค่าพอยน์เตอร์เป็น NULL ทุกครั้งหลังจาก free()ing พวกมัน (หรือเรียกใช้ฟังก์ชัน freeing เฉพาะ)
ตัวอย่างเช่น:
char* ptr = malloc(100);
...
free(ptr);
ptr = NULL;
or
struct graph* graph = create_graph();
...
destroy_graph(graph);
graph = NULL;
เหตุใดจึงเป็นแนวทางปฏิบัติที่ดี
อัปเดต: หลังจากอ่านคำตอบแล้ว ดูเหมือนว่าเป็นการฝึกฝนที่แย่มากสำหรับฉัน! ฉันกำลังซ่อนข้อผิดพลาด double-free() ที่เป็นไปได้ สิ่งนี้จะเป็นแนวทางปฏิบัติที่ดีได้อย่างไร? ฉันตกใจ.
ขอบคุณโบดา ไซโด
NULL
- person jamesdlin   schedule 29.07.2010(void*)0xdeadbeef
ในโหมดแก้ไขข้อบกพร่อง เพื่อให้คุณสามารถตรวจจับการใช้งานที่ผิดพลาดได้ - person Den-Jason   schedule 02.10.2019