Rò rỉ bộ nhớ xảy ra khi một vùng nhớ đã được cấp phát bởi lập trình viên nhưng không được giải phóng đúng cách. Vùng nhớ đó không còn được chương trình sử dụng, nhưng vẫn bị chiếm giữ vô ích. Đó là lý do gọi là rò rỉ bộ nhớ.
Do rò rỉ bộ nhớ, một số khối nhớ có thể bị lãng phí. Ngay cả khi hệ thống còn đủ nhớ, tình trạng này cũng có thể làm chậm hiệu năng.
Ví dụ 1
void my_func() {
int *data = new int;
*data = 50;
// thiếu delete data; -> rò rỉ bộ nhớ
}
Vấn đề ở đây là con trỏ data không bao giờ bị xóa, dẫn đến lãng phí bộ nhớ.
Ví dụ 2
#include <stdio.h>
int my_fun() {
printf("my_fun function\n");
return 0;
}
int main(void) {
auto int my_fun();
my_fun();
printf("Main Function\n");
printf("Done");
return 0;
}
Kết quả
my_fun function Main Function Done