কেন size_tএখানে থাকা দরকার এবং কীভাবে আমরা এখানে এলাম তা জানার জন্য:
ব্যবহারিক দিক থেকে size_tএবং a৪ ptrdiff_tবিট প্রয়োগের ক্ষেত্রে b৪ বিট প্রশস্ত, 32-বিট বাস্তবায়নে 32 বিট প্রস্থ এবং এই জাতীয় গ্যারান্টিযুক্ত। উত্তরাধিকারের কোডটি ভঙ্গ না করে তারা প্রতিটি সংকলকটিতে বিদ্যমান কোনও প্রকারকে বোঝাতে বাধ্য করতে পারেনি।
ক size_tবা ptrdiff_tঅগত্যা একটি intptr_tবা হিসাবে একই হয় না uintptr_t। তারা নির্দিষ্ট আর্কিটেকচারের যে এখনও ব্যবহৃত ছিল বিভিন্ন ছিল size_tএবং ptrdiff_tপ্রয়াত '80s মধ্যে স্ট্যান্ডার্ড যোগ করা হয় নি, এবং অপ্রচলিত হয়ে উঠছে যখন C99 অনেক নতুন ধরনের যোগ কিন্তু এখনও সরানো হয়নি (যেমন 16 বিট উইন্ডোজ হিসাবে)। 16-বিট সুরক্ষিত মোডে x86 এর একটি বিভাগযুক্ত মেমরি ছিল যেখানে বৃহত্তম সম্ভাব্য অ্যারে বা কাঠামো মাত্র 65,536 বাইট আকারের হতে পারে, তবে farরেজিস্টারগুলির চেয়ে 32 বিট প্রশস্ত, পয়েন্টার হওয়া দরকার। ঐ তারিখে, intptr_t32 বিট প্রশস্ত হতো কিন্তু size_tএবংptrdiff_t16 বিট প্রশস্ত এবং একটি রেজিস্টারে ফিট হতে পারে। এবং ভবিষ্যতে কোন ধরণের অপারেটিং সিস্টেম লিখিত হতে পারে কে জানত? তত্ত্ব অনুসারে, আই 386 আর্কিটেকচারটি 48-বিট পয়েন্টার সহ 32-বিট সেগমেন্টেশন মডেল সরবরাহ করে যা কোনও অপারেটিং সিস্টেম আসলে ব্যবহার করেনি।
অফসেটের মেমরির ধরণটি longকারণ হতে পারে না কারণ অনেক বেশি লিগ্যাসি কোডটি ধরে নিয়েছে যে long32 বিট বিস্তৃত। এই অনুমানটি এমনকি ইউএনআইএক্স এবং উইন্ডোজ এপিআইতে নির্মিত হয়েছিল। দুর্ভাগ্যক্রমে, প্রচুর অন্যান্য লিগ্যাসি কোডও ধরে নিয়েছে যে longপয়েন্টার, ফাইল অফসেট, সেকেন্ডের সংখ্যা যে ১৯ 1970০ সাল থেকে পেরিয়ে গেছে, ধরে রাখার জন্য যথেষ্ট প্রশস্ত। পজিক্স এখন পূর্বের পরিবর্তে পরবর্তী ধারণাটি সত্য হতে বাধ্য করার জন্য একটি প্রমিত মানের উপায় সরবরাহ করে তবে কোনওটিই বহনযোগ্য পোর্টেবল অনুমান নয়।
এটি হতে পারে না intকারণ 90 এর দশকে কেবলমাত্র একটি ক্ষুদ্র মুষ্টিমেয় সংকলক int64 বিট প্রশস্ত করেছিলেন। তারপরে long32 বিট প্রশস্ত রেখে তারা সত্যিই অদ্ভুত হয়ে উঠল । স্ট্যান্ডার্ডের পরবর্তী সংশোধনটি এর intচেয়ে বেশি বিস্তৃত হওয়ার জন্য এটি অবৈধ ঘোষণা করেছে long, তবে intবেশিরভাগ 64-বিট সিস্টেমে 32 বিট প্রস্থ রয়েছে।
এটি হতে পারে না long long int, যা যাইহোক পরে যুক্ত করা হয়েছিল, যেহেতু এটি 32-বিট সিস্টেমে কমপক্ষে 64 বিট প্রশস্ত হতে তৈরি হয়েছিল।
সুতরাং, একটি নতুন ধরণের প্রয়োজন ছিল। এমনকি এটি না হলেও, এই সমস্ত অন্যান্য ধরণের অর্থ একটি অ্যারে বা অবজেক্টের মধ্যে অফসেট ব্যতীত অন্য কিছু। এবং যদি 32-থেকে-64-বিট স্থানান্তরের ফায়াসকো থেকে একটি পাঠ পাওয়া যায়, তবে এটি নির্দিষ্ট হওয়া উচিত যে কোন ধরণের কী কী সম্পত্তি থাকতে হবে এবং এটি বিভিন্ন প্রোগ্রামে বিভিন্ন জিনিস বোঝাতে একটি ব্যবহার করা উচিত নয়।
intযদিsome_sizeসাইন করা হয়েছে,size_tযদি এটা স্বাক্ষরবিহীন করা হয়।