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

C++-এ সেগমেন্টেশন ফল্ট (Segmentation Fault) কি অন্ডিফাইনড বিহেভিয়ার (Undefined Behavior)?

অন্ডিফাইনড বিহেভিয়ার (UB) মানে C++ স্ট্যান্ডার্ড আচরণ নির্দিষ্ট করে না। কম্পাইলার/ওএস যেকোনো কাজ করতে পারে: ক্র্যাশ, সাইলেন্টলি কাজ করা, ভুল রেজাল্ট, কিছুই না করা।

সেগমেন্টেশন ফল্ট UB-এর একটি সম্ভাব্য ফলাফল, কিন্তু UB-এর সংজ্ঞা নয়। UB-এর অনেক কেস সেগফল্ট ছাড়াও ঘটতে পারে।

উদাহরণ

int main() {
    int arr[2];
    arr[0] = 0;
    arr[1] = 1;
    arr[2] = 2; // Undefined Behaviour (out of bounds)
    arr[3] = 3; // Undefined Behaviour
}

এই কোড:sometimes crash দেবে (segfault), sometimes সাইলেন্টলি কাজ করবে, sometimes ডেটা করাপ্ট করবে। এটি কম্পাইলার, অপ্টিমাইজেশন লেভেল, রানটাইম এনভায়রনমেন্টের ওপর নির্ভরশীল।

নिष्कর্ষ: সেগফল্ট UB-এর একটি লক্ষণ মাত্র, সমতুল্য নয়। UB এড়ানোই একমাত্র সঠিক পথ।

  1. C/C++-এ Undefined, Unspecified, Implementation-Defined Behavior পার্থক্য

  2. লিনাক্সে C++-এর জন্য সেরা IDE কী?

  3. লিনাক্সে C++-এর জন্য সেরা IDE কী? (আলাদা লেখা)

  4. উইন্ডোজে C++-এর জন্য সেরা IDE কী? (আলাদা লেখা)