আপনি যখন কোনও বস্তু তৈরি করবেন তখন সেই পরিমাণের পরিমাণ বরাদ্দ করা হয় তা পুরোপুরি তার ধরণের উপর নির্ভর করে। আমি যে বরাদ্দের কথা বলছি তা বরাদ্দ new
বা না থেকে বরাদ্দ নয় malloc
, তবে বরাদ্দ করা স্থানটি যাতে আপনি আপনার নির্মাতাকে পরিচালনা করতে পারেন এবং আপনার অবজেক্টটি আরম্ভ করতে পারেন।
আপনার যদি কোনও কাঠামো হিসাবে সংজ্ঞায়িত করা হয় (উদাহরণস্বরূপ)
struct A { char a, b; }; //sizeof(A) == 2, ie an A needs 2 bytes of space
তারপরে আপনি যখন অবজেক্টটি নির্মাণ করবেন:
A a{'a', 'b'};
আপনি প্রক্রিয়া হিসাবে অবজেক্টটি নির্মাণের প্রক্রিয়াটি সম্পর্কে ভাবতে পারেন:
- 2 বাইট স্থান বরাদ্দ করুন (স্ট্যাকের মধ্যে, তবে এই উদাহরণের জন্য কোথায় গুরুত্বপূর্ণ নয়)
- অবজেক্টের কনস্ট্রাক্টর চালান (এই ক্ষেত্রে অনুলিপি
'a'
এবং 'b'
অবজেক্টে)
এটি লক্ষণীয় গুরুত্বপূর্ণ যে 2 বাইটের প্রয়োজনীয় স্থানটি পুরোপুরি অবজেক্টের ধরণের দ্বারা নির্ধারিত হয়, ফাংশনটির পক্ষে যুক্তিগুলি কোনও বিষয় নয়। সুতরাং, একটি অ্যারের জন্য প্রক্রিয়া সমান, এখন বাদে প্রয়োজনীয় জায়গার পরিমাণ অ্যারের উপাদানগুলির সংখ্যার উপর নির্ভর করে।
char a[] = {'a'}; //need space for 1 element
char b[] = {'a', 'b', 'c', 'd', 'e'}; //need space for 5 elements
ধরনের তাই a
এবং b
এটা সত্য যে প্রতিফলিত হবে a
1 গৃহস্থালির কাজ জন্য পর্যাপ্ত স্থান প্রয়োজন এবং b
5 অক্ষর জন্য পর্যাপ্ত স্থান প্রয়োজন। এর অর্থ এই যে অ্যারেগুলির আকারটি হঠাৎ করে পরিবর্তন হতে পারে না, একবার 5-উপাদান অ্যারে তৈরি হয়ে গেলে এটি সর্বদা 5-উপাদান অ্যারে হয় is "অ্যারে" -র মতো অবজেক্টগুলি রাখতে যেখানে আকারটি পৃথক হতে পারে, আপনার গতিশীল মেমরির বরাদ্দ থাকা দরকার যা আপনার বইটি কোনও পর্যায়ে আবরণ করা উচিত।