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

C++-এ প্লেসমেন্ট নিউ (placement new) অপারেটর


এই भागে আমরা দেখব C++-এ প্লেসমেন্ট নিউ (placement new) অপারেটর কী। এটি নিউ (new) অপারেটর기의 অন্য একটি ভেরিয়েশন। নরমাল new অপারেটর দুটি কাজ করে। এটি মেমরি অ্যালোকেট করে, এবং তারপর অ্যালোকেটেড মেমরিতে অবজেক্ট কনস্ট্রাক্ট করে।

new অপারেটর হিপ সেকশনে মেমরি অ্যালোকেট করে এবং সেখানে অবজেক্ট কনস্ট্রাক্ট করে। কিন্তু placement new অপারেটরের জন্য, এটি দিয়ে गये অ্যাড্রেসে অবজেক্ট কনস্ট্রাক্ট করে। মেমরি ডি-অ্যালোকেট করতে আমরা delete কীওয়ার্ড ব্যবহার করতে পারি যদি মেমরি new অপারেটর দিয়ে অ্যালোকেট করা হয়। কিন্তু placement new-এর জন্য কোনো placement delete ফিচার নেই।

সংক্ষেপে, প্লেসমেন্ট নিউ আপনাকে একটি অবজেক্ট "কনস্ট্রাক্ট" করতে দেয় এমন মেমরিতে যা ইতিমধ্যে একটি দিয়ে गये ভেরিয়েবলের জন্য অ্যালোকেটেড। এটি অপ্টিমাইজেশনের জন্য উপকারী কারণ এটি দ্রুততর যে মেমরি পুনরাবৃত্তি না করে রিইউজ করা যায়। এটি নিচের şekilde ব্যবহার করা যায় -

new (address) (type) initializer

আমরা একটি অ্যাড্রেস স্পেসিফাই করতে পারি যেখানে আমরা একটি দিয়ে गये টাইপের নতুন অবজেক্ট কনস্ট্রাক্ট করতে চাই। উদাহরণস্বরূপ।

উদাহরণ কোড

#include <iostream> 
using namespace std; 
int main() { 
    int a = 5; 
    cout << "a = " << a << endl; 
    cout << "&a = " << &a << endl; 
    // Placement new X-এর ভ্যালু 100-এ পরিবর্তন করে
    int *m = new (&a) int(10); 
    cout << "\nAfter using placement new:" << endl; 
    cout << "a = " << a << endl; 
    cout << "m = " << m << endl; 
    cout << "&a = " << &a << endl; 
    return 0; 
}

আউটপুট

a = 5
&a = 0x22fe34
After using placement new:
a = 10
m = 0x22fe34
&a = 0x22fe34

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

  2. C++-এ ?-->? অপারেটর কী?

  3. C++-এ অ্যারো অপারেটর (->) কী?

  4. C++-এ ইউনারি অপারেটর (Unary Operators)