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