หน่วยความจำรั่วเกิดขึ้นเมื่อชิ้นส่วนของหน่วยความจำที่โปรแกรมเมอร์จัดสรรไว้ก่อนหน้านี้ จากนั้นโปรแกรมเมอร์จะไม่ได้รับการจัดสรรคืนอย่างเหมาะสม หน่วยความจำนั้นไม่ได้ใช้โดยโปรแกรมอีกต่อไป ดังนั้นสถานที่นั้นจึงถูกสงวนไว้โดยไม่มีเหตุผล เหตุนี้จึงเรียกว่าหน่วยความจำรั่ว
สำหรับหน่วยความจำรั่ว หน่วยความจำบางส่วนอาจสูญเสียไป หากระบบมีหน่วยความจำเพียงพอ ในกรณีนี้อาจทำให้ประสิทธิภาพการทำงานช้าลง
ตัวอย่าง
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