Memory Leak (รั่วไหลของหน่วยความจำ) เกิดขึ้นเมื่อโปรแกรมเมอร์จัดสรรหน่วยความจำไว้ แต่ไม่ได้ปล่อยคืนอย่างถูกต้อง หน่วยความจำนั้นไม่ได้ถูกใช้งานโดยโปรแกรมอีกต่อไป แต่ยังคงถูกจองไว้โดยไม่มีเหตุผล นั่นคือเหตุผลที่เรียกว่า "Memory Leak"
จาก Memory Leak บล็อกหน่วยความจำบางส่วนอาจถูกสูญเสียไป แม้ระบบจะมีหน่วยความจำเพียงพอ ก็อาจทำให้ประสิทธิภาพช้าลงได้
ตัวอย่าง
void my_func() {
int *data = new int;
*data = 50;
}
ปัญหาคือพอยน์เตอร์ *data ไม่เคยถูกลบ ทำให้หน่วยความจำถูกสูญเสีย
ตัวอย่างเพิ่มเติม
#include <stdio.h>
int my_fun();
int main(void) {
my_fun();
printf("Main Function\n");
return 0;
}
int my_fun() {
printf("my_fun function\n");
return 0;
}
ผลลัพธ์
my_fun function Main Function