কম্পিউটার টিউটোরিয়াল

C++-এ ডেস্ট্রাক্টর vs free() ফাংশন পার্থক্য

C++-এ ডেস্ট্রাক্টর এবং C-র free() (বা C++-র delete) ভিন্ন কনসেপ্ট।

ডেস্ট্রাক্টর (Destructor)

  • অবজেক্ট ডিস্ট্রয় হওয়ার পূর্বে আটোমেটিক্যালি কল হয়।
  • ক্লিন-আপ কোড (রিসোর্স রিলিজ, লগিং ইত্যাদি) লিখতে ব্যবহৃত হয়।
  • আর্গুমেন্ট নেয় না, রিটার্ন টাইপ নেই।
  • স্ট্যাক অবজেক্টের জন্য স্কোপ শেষে, হিপ অবজেক্টের জন্য delete কললে রান হয়।

free() / delete

  • মেমরি ডি-অ্যালোকেট করে (রিলিজ করে)।
  • delete ডেস্ট্রাক্টর কল করে, free() করে না (C-স্টাইল)।
  • C++-এ new দিয়ে আলোকেট করা মেমরি delete দিয়ে, malloc দিয়ে আলোকেট করা free দিয়ে ফ্রি করতে হয়।

উদাহরণ

#include <iostream>
using namespace std;

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

int main() {
    MyClass* obj = new MyClass();
    delete obj; // মেমরি ফ্রি + ডেস্ট্রাক্টর কল
    return 0;
}

আউটপুট

Destructor called

গুরুত্বপূর্ণ: free() ব্যবহার করে C++ অবজেক্ট ডিলিট করলে ডেস্ট্রাক্টর কল হয় না → রিসোর্স লিক। সবসময় new/delete জোড়া ব্যবহার করুন। স্মার্ট পয়েন্টার (unique_ptr, shared_ptr) ব্যবহার করলে ম্যানুয়াল delete প্রয়োজন নেই।

  1. মেথড এবং ফাংশনের পার্থক্য কী?

  2. জাভাস্ক্রিপ্ট এবং C++-এর পার্থক্য কী?

  3. জাভাস্ক্রিপ্টে ফাংশন ও মেথডের পার্থক্য

  4. C++-এ ডট (.) অপারেটর এবং -> (অ্যারো) অপারেটরের পার্থক্য