Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

Memory Leak ใน C/C++ คืออะไร?


หน่วยความจำรั่วเกิดขึ้นเมื่อชิ้นส่วนของหน่วยความจำที่โปรแกรมเมอร์จัดสรรไว้ก่อนหน้านี้ จากนั้นโปรแกรมเมอร์จะไม่ได้รับการจัดสรรคืนอย่างเหมาะสม หน่วยความจำนั้นไม่ได้ใช้โดยโปรแกรมอีกต่อไป ดังนั้นสถานที่นั้นจึงถูกสงวนไว้โดยไม่มีเหตุผล เหตุนี้จึงเรียกว่าหน่วยความจำรั่ว

สำหรับหน่วยความจำรั่ว หน่วยความจำบางส่วนอาจสูญเสียไป หากระบบมีหน่วยความจำเพียงพอ ในกรณีนี้อาจทำให้ประสิทธิภาพการทำงานช้าลง

ตัวอย่าง

void my_func() {
   int *data = new int;
   *data = 50;
}

ปัญหาคือ *ตัวชี้ข้อมูลไม่เคยถูกลบ หน่วยความจำจึงเปลือง

ตัวอย่าง

#include <stdio.h>
main(void) {
   auto int my_fun();
   my_fun();
   printf("Main Function\n");
   int my_fun() {
      printf("my_fun function\n");
   }
   printf("Done");
}

ผลลัพธ์

my_fun function
Main Function
Done