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

C++-এ new অপারেটর কখন ব্যবহার করবেন এবং কখন নয়?


new অপারেটর ব্যবহার করার অর্থ হিপে মেমরি aloket করার অনুরোধ। যদি পর্যাপ্ত মেমরি থাকে, তবে এটি মেমরি ইনিশিয়ালাইজ করে এবং এর অ্যাড্রেস পয়েন্টার ভেরিয়েবলে ফেরত দেয়।

new অপারেটর শুধু তখন ব্যবহার করা উচিত যখন ডাটা অবজেক্টটি মেমরিতে delete কল করা পর্যন্ত থাকতে হবে। অন্যথায়, যদি new অপারেটর ব্যবহার না করা হয়, তবে অবজেক্টটি স্কোপ থেকে বের হলে আটোমেটিক্যালি ডিস্ট্রয় হয়। অন্য কথায়, new ব্যবহার করা অবজেক্ট ম্যানুয়ালি ক্লিন-আপ করতে হয় যখন অন্যান্য অবজেক্ট স্কোপ থেকে বের হলে আটোমেটিক্যালি ক্লিন হয়।

new অপারেটরের সিনট্যাক্স নিচে দেওয়া হল।

pointer_variable = new datatype;

উপরের সিনট্যাক্সে, pointer_variable হল পয়েন্টার ভেরিয়েবল যাকে মেমরি অ্যাড্রেস ফেরত দেওয়া হয় এবং datatype হল মেমরির জন্য বিল্ট-ইন ডাটা টাইপ।

new অপারেটর ব্যবহার প্রদর্শন করে একটি প্রোগ্রাম নিচে দেওয়া হল।

উদাহরণ

#include <iostream>
using namespace std;

int main () {
    int *ptr1 = NULL;
    ptr1 = new int;
    float *ptr2 = new float(223.324);
    *ptr1 = 28;
    cout << "Value of pointer variable 1 : " << *ptr1 << endl;
    cout << "Value of pointer variable 2 : " << *ptr2 << endl;
    delete ptr1;
    delete ptr2;
    return 0;
}

আউটপুট

উপরোক্ত প্রোগ্রামের আউটপুট নিম্নরূপ।

Value of pointer variable 1 : 28
Value of pointer variable 2 : 223.324

এখন আসুন উপরের প্রোগ্রামটি বুঝি।

new অপারেটর ব্যবহার করে মেমরি ইনিশিয়ালাইজ করা হয়েছে এবং এর অ্যাড্রেস পয়েন্টার ভেরিয়েবল ptr1 এবং ptr2-এ ফেরত দেওয়া হয়েছে। তারপর ptr1 এবং ptr2 যেসব মেমরি লোকেশনে পয়েন্ট করে সেসব মান প্রদর্শন করা হয়েছে। অবশেষে delete অপারেটর ব্যবহার করে মেমরি ফ্রি করা হয়েছে।

এটি দেখানোর কোড স্নিপেট নিচে দেওয়া হল -

int *ptr1 = NULL; ptr1 = new int; float *ptr2 = new float(223.324); *ptr1 = 28; cout << "Value of pointer variable 1 : " << *ptr1 << endl; cout << "Value of pointer variable 2 : " << *ptr2 << endl; delete ptr1; delete ptr2;

  1. C++-এ স্মার্ট পয়েন্টার (Smart Pointer) কী এবং কখন ব্যবহার করবেন?

  2. C++-এ 'friend' কখন ব্যবহার করা উচিত?

  3. C++-এ new অপারেটর দিয়ে মেমরি ইনিশিয়ালাইজ করা

  4. C++-এ পয়েন্টার অপারেটর * (ইন্ডিরেকশন)