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

ความแตกต่างระหว่าง Destructor และ free() ใน C++

Destructor เป็น member function מיוחד ที่เรียกอัตโนมัติเมื่อ object ถูกทำลาย (out of scope, delete, ทำลาย container) ทำ cleanup logic

free() เป็น C library function (<cstdlib>) ใช้ปล่อยหน่วยความจำที่ allocate ด้วย malloc() ไม่เรียก destructor

จุดสำคัญ

  • C++ ใช้ new/delete แทน malloc/free
  • delete เรียก destructor แล้วค่อยปล่อยหน่วยความจำ
  • free() เพียงปล่อยหน่วยความจำ ไม่เรียก destructor → resource leak
  • Destructor: ไม่มี parameter, ไม่มี return type, ชื่อ ~ClassName()

ตัวอย่าง

class MyClass {
public:
    ~MyClass() { cout << "Destructor called\n"; }
};

int main() {
    MyClass *obj = new MyClass();
    delete obj; // เรียก destructor แล้ว free memory
    // free(obj); // ผิด! ไม่เรียก destructor
}

ผลลัพธ์

Destructor called

ห้ามผสม new/delete กับ malloc/free