কম্পিউটার টিউটোরিয়াল

কেন C++-এ অ্যারে আউট-অফ-বাউন্ডস অ্যাক্সেসে এরর দেয় না?

C++ বাউন্ডস চেকিং (bounds checking) করে না। Java, Python-এর মতো ল্যাঙ্গুয়েজগুলো রানটাইমে চেক করে এক্সসেপশন থ্রো করে।

কারণ: C++-র ডিজাইন ফিলোসফি: "C-এর চেয়ে ধীর হয় না"। C বাউন্ড চেক করে না, তাই C++-ও করে না। এটি পারফরম্যান্সের জন্য।

ফলাফল: আউট-অফ-বাউন্ডস অ্যাক্সেস Undefined Behaviour (UB)। যেকোনো কিছু ঘটতে পারে:

  • প্রোগ্রাম ক্র্যাশ (সেগফল্ট)
  • সাইলেন্টলি ভুল মান পড়া/লেখা
  • অন্য ভেরিয়েবল করাপ্ট করা
  • দেখতে ঠিকঠাক চলতে পারে (সবচেয়ে বিপজ্জনক)

সুরক্ষা: std::vector::at() ব্যবহার করুন (রানটাইম চেক করে), std::array, বা বাউন্ড চেকিং সানিটাইজার (ASan, -fsanitize=address) কম্পাইল টাইমে/রানটাইমে সক্রিয় করুন।

  1. সি++-এ অন্য অ্যারের কোনো উপাদান দ্বারা ভাগ নয় এমন উপাদান বের করা

  2. C++-এ ইন্টিজার অ্যারেয়ের মিডিয়ান (Median) বের করার প্রোগ্রাম

  3. C++-এ খালি ক্লাসের সাইজ শূন্য নয় কেন?

  4. সি++ STL ব্যবহার করে অ্যারে প্যালিনড্রোম কিনা তা যাচাই করার প্রোগ্রাম