অন্ডিফাইনড বিহেভিয়ার (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 এড়ানোই একমাত্র সঠিক পথ।