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

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

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