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