স্পষ্টভাবে একটি অ্যারের সাথে কোনও অ্যারের দৈর্ঘ্য সংরক্ষণ না করার পিছনে যুক্তি কী ছিল C?
আমি যেভাবে দেখি, সেখানে অপ্রতিরোধ্য কারণ আছে তা করার মানক (C89) সমর্থনে কিন্তু খুব অনেক। এই ক্ষেত্রে:
- বাফারে দৈর্ঘ্য পাওয়া বাফারকে ছাড়িয়ে নিতে পারে।
- একটি জাভা-শৈলী
arr.lengthউভয়ই পরিষ্কার এবং প্রোগ্রামারকেintস্ট্যাকের উপর অনেকগুলি বজায় রাখা থেকে বিরত রাখে যদি বেশ কয়েকটি অ্যারে নিয়ে কাজ করে তবে - ফাংশন প্যারামিটারগুলি আরও কমেন্ট হয়।
তবে সম্ভবত আমার পক্ষে সবচেয়ে অনুপ্রেরণামূলক কারণটি হ'ল সাধারণত দৈর্ঘ্য না রেখে কোনও স্থানই রক্ষা হয় না। আমি বলার উদ্যোগ নেব যে অ্যারের বেশিরভাগ ব্যবহারে গতিশীল বরাদ্দ জড়িত। সত্য, কিছু ক্ষেত্রে থাকতে পারে যেখানে লোকেরা স্ট্যাকের জন্য বরাদ্দকৃত অ্যারে ব্যবহার করে তবে এটি কেবল একটি ফাংশন কল * - স্ট্যাকটি 4 বা 8 বাইট অতিরিক্ত পরিচালনা করতে পারে।
যেহেতু হিপ ম্যানেজারটি যেভাবেই ডায়নামিকভাবে বরাদ্দ করা অ্যারে ব্যবহার করে ফ্রি ব্লকের আকার ট্র্যাক করতে হয়, কেন সেই তথ্যটি ব্যবহারযোগ্য না করে (এবং সংকলনের সময় পরীক্ষা করা অতিরিক্ত নিয়ম যুক্ত করুন) যে দৈর্ঘ্যটি স্পষ্টভাবে ম্যানিপুলেট করতে পারবেন না যদি না কেউ নিজেকে পায়ে গুলি করতে পছন্দ করুন)।
আমি কেবল অন্যদিকে ভাবতে পারি যে কোনও দৈর্ঘ্যের ট্র্যাকিং সংকলকগুলি সহজতর করতে পারে নি তবে এটি এত সহজ নয়।
* প্রযুক্তিগতভাবে, কেউ স্বয়ংক্রিয় স্টোরেজ সহ একটি অ্যারের সাথে এক ধরণের পুনরাবৃত্ত ফাংশন লিখতে পারে এবং এটির (খুব বিস্তৃত) ক্ষেত্রে দৈর্ঘ্য সংরক্ষণ করার ফলে কার্যকরভাবে আরও স্থান ব্যবহারের ফলস্বরূপ হতে পারে।
malloc()এডের আকারের বহনযোগ্য উপায়ে অনুরোধ করা যাবে না?" এটি এমন একটি জিনিস যা আমাকে কয়েকবার অবাক করে দেয়।