ในทางทฤษฎีฉันสามารถพูดได้ว่า
free(ptr);
free(ptr);
เป็นความเสียหายของหน่วยความจำเนื่องจากเรากำลังปลดปล่อยหน่วยความจำที่ได้รับการปลดปล่อยไปแล้ว
แต่ถ้า
free(ptr);
ptr=NULL;
free(ptr);
เนื่องจากระบบปฏิบัติการจะทำงานในลักษณะที่ไม่ได้กำหนดฉันจึงไม่สามารถรับการวิเคราะห์ทางทฤษฎีที่แท้จริงเกี่ยวกับสิ่งที่เกิดขึ้นได้ ไม่ว่าฉันกำลังทำอะไรอยู่นี้หน่วยความจำเสียหายหรือไม่?
การพ้นตัวชี้ NULL ถูกต้องหรือไม่?
delete NULLไม่ถูกต้องใน C ++ ลบสามารถนำไปใช้ค่า null ชี้ประเภทคอนกรีต NULLแต่ไม่ให้ delete (int*) NULLเป็นกฎหมาย delete NULLแต่ไม่ได้
ptrชี้ไปที่หน่วยความจำและคุณไม่ได้เรียกfreeใช้หน่วยความจำนั้นจะรั่วไหล การตั้งค่าให้NULLสูญเสียการจัดการกับหน่วยความจำและการรั่วไหล หากptr เกิดขึ้นการNULLโทรfreeคือการไม่ดำเนินการ
free(ptr)ด้วยptr = NULL. ไม่มีใครพูดอะไรแบบนั้น