C++-এ ফাংশন থেকে লোকাল অ্যারে রিটার্ন করা সরাসরি সম্ভব না কারণ ফাংশন শেষ হলে লোকাল ভ্যারিয়েবল ডিস্ট্রয় হয়। সমাধান: ডাইনামিক্যালি অ্যালোকেট করা অ্যারে (হিপে) রিটার্ন করা।
উদাহরণ কোড
#include <iostream>
using namespace std;
// ফাংশন থেকে ডাইনামিক অ্যারে রিটার্ন
int* Array() {
int* a = new int[100]; // হিপে অ্যালোকেট
a[0] = 7;
a[1] = 6;
a[2] = 4;
a[3] = 5;
return a; // পয়েন্টার রিটার্ন
}
int main() {
int* p = Array();
cout << "The elements are: " << p[0] << " " << p[1]
<< " " << p[2] << " " << p[3];
delete[] p; // মেমরি মুক্ত করা জরুরি
return 0;
}
আউটপুট
The elements are: 7 6 4 5
সাবধানতা: কলারের দায়িত্ব delete[] কল করে মেমরি মুক্ত করা। ভুল করলে মেমরি লিক হবে। ভালো প্র্যাকটিস: std::vector বা std::unique_ptr<int[]> রিটার্ন করুন।