উত্তর:
আপনি সম্ভবত এখানে একটি স্ট্যাক ওভারফ্লো পেয়ে যাচ্ছেন। অ্যারে আপনার প্রোগ্রামের স্ট্যাক ঠিকানার জায়গায় ফিট করার জন্য খুব বড়।
যদি আপনি গাদাতে অ্যারে বরাদ্দ করেন তবে আপনার ভাল হওয়া উচিত, ধরে নিবেন আপনার মেশিনে পর্যাপ্ত স্মৃতি রয়েছে।
int* array = new int[1000000];
তবে মনে রাখবেন এটি delete[]
আপনার অ্যারেতে প্রয়োজন হবে । আরও ভাল সমাধান std::vector<int>
হ'ল এটি ব্যবহার করে এটি 1000000 উপাদানগুলিতে পুনরায় আকার দিন।
সি বা সি ++ এ স্থানীয় বস্তুগুলি সাধারণত স্ট্যাকের জন্য বরাদ্দ করা হয়। আপনি স্ট্যাকের উপর একটি বড় অ্যারে বরাদ্দ করছেন, স্ট্যাকটি পরিচালনা করতে পারে তার চেয়ে বেশি, তাই আপনি স্ট্যাকওভারফ্লো পাচ্ছেন ।
এটিকে স্থানীয় স্তরে বরাদ্দ করবেন না, পরিবর্তে অন্য কোনও জায়গা ব্যবহার করুন। বস্তুটিকে বৈশ্বিক করে তোলা বা বৈশ্বিক স্তূপে বরাদ্দ করে এটি অর্জন করা যেতে পারে । গ্লোবাল ভেরিয়েবলগুলি ঠিক আছে, যদি আপনি অন্য কোনও সংকলন ইউনিট ব্যবহার না করেন। এটি দুর্ঘটনাক্রমে না ঘটে তা নিশ্চিত করার জন্য, একটি স্ট্যাটিক স্টোরেজ নির্দিষ্টকারী যুক্ত করুন, অন্যথায় কেবল গাদা ব্যবহার করুন।
এটি বিএসএস বিভাগে বরাদ্দ করবে, যা হাড়ের একটি অংশ:
static int c[1000000];
int main()
{
cout << "done\n";
return 0;
}
এটি ডেটা বিভাগে বরাদ্দ দেবে, এটিও স্তূপের একটি অংশ:
int c[1000000] = {};
int main()
{
cout << "done\n";
return 0;
}
এটি গাদা কিছু অনির্দিষ্ট স্থানে বরাদ্দ হবে:
int main()
{
int* c = new int[1000000];
cout << "done\n";
return 0;
}
delete
আপনার যে জায়গাতে বরাদ্দ করা হয়েছে তা সর্বদা এটি ভাল অনুশীলন new
। তবে আপনি যদি নিশ্চিত হন যে আপনি কেবল একবার মেমরি বরাদ্দ করেন (মূল মত) এটি কঠোরভাবে প্রয়োজন হয় না - মেমরিটি স্পষ্টভাবে ছাড়াই মূল থেকে বেরোনোর সময় মুক্ত হওয়ার গ্যারান্টিযুক্ত delete
।
এছাড়াও, আপনি যদি বেশিরভাগ ইউনিক্স এবং লিনাক্স সিস্টেমে চলমান থাকেন তবে নিম্নলিখিত কমান্ডের সাহায্যে আপনি স্ট্যাকের আকারটি অস্থায়ীভাবে বাড়িয়ে নিতে পারেন:
ulimit -s unlimited
তবে সাবধানতা অবলম্বন করুন, স্মৃতিটি একটি সীমিত সংস্থান এবং দুর্দান্ত শক্তির সাথে দুর্দান্ত দায়িত্ব আসে :)
আপনার অ্যারে এই ক্ষেত্রে বরাদ্দ দেওয়া হচ্ছে বরাদ্দ ব্যবহার করে একই আকারের একটি অ্যারের বরাদ্দ করার চেষ্টা করা।
কারণ আপনি স্ট্যাকের মধ্যে অ্যারে সঞ্চয় করেন। আপনি এটি গাদা সংরক্ষণ করা উচিত। গাদা এবং স্ট্যাকের ধারণাটি বোঝার জন্য এই লিঙ্কটি দেখুন ।