Placement new ব্যবহার করে ইনিশিয়ালাইজড মেমরির ওপর অবজেক্ট কনস্ট্রাক্ট করা যায়। এটি অপ্টিমাইজেশনের জন্য দরকারি (পুনরায় অ্যালোকেশন ছাড়াই অবজেক্ট রিইউজ)।
সিনট্যাক্স
new (address) Type(initializer);
উদাহরণ
#include <iostream>
using namespace std;
int main() {
int a = 5;
cout << "a = " << a << endl;
cout << "&a = " << &a << endl;
// Placement new: a-এর মেমরিতে নতুন int(10) কনস্ট্রাক্ট
int *m = new (&a) int(10);
cout << "\nAfter placement new:" << endl;
cout << "a = " << a << endl; // 10
cout << "m = " << m << endl; // a-এর ঠিকানা
cout << "&a = " << &a << endl;
return 0;
}
আউটপুট
a = 5 &a = 0x60ff18 After placement new: a = 10 m = 0x60ff18 &a = 0x60ff18
ব্যবহার ক্ষেত্র: মেমরি পুল, কাস্টম অ্যালোকেটর, EASTL, গেম ডেভেলপমেন্ট, রিয়েল-টাইম সিস্টেমে মেমরি ফ্র্যাগমেন্টেশন এড়াতে।
সতর্কতা: পুরানো অবজেক্টের ডিস্ট্রাক্টর ম্যানুয়ালি কল করতে হয় (যদি non-trivial destructor থাকে) এরপর placement new কল করতে হয়।