C और Java के बीच एक मूलभूत अंतर यह है कि यदि कोई जावा की कुछ आसानी से पहचानी जाने वाली विशेषताओं (जैसे कि Unsafe
नामस्थान में मौजूद) से बचता है , तो हर संभव कार्रवाई का प्रयास कर सकता है - जिसमें "गलत" वाले शामिल हैं - संभावित परिणामों की एक सीमित सीमा होगी। । जबकि यह सीमित करता है कि कोई जावा में क्या कर सकता है - कम से कम Unsafe
नेमस्पेस का उपयोग किए बिना , यह एक संभावित प्रोग्राम के कारण होने वाले नुकसान को सीमित करना संभव बनाता है, या - अधिक महत्वपूर्ण रूप से - एक प्रोग्राम द्वारा जो सही तरीके से प्रक्रिया करेगा वैध फाइलें लेकिन गलत लोगों के खिलाफ विशेष रूप से संरक्षित नहीं है।
परंपरागत रूप से, सी संकलक मानक-परिभाषित फैशन में "सामान्य" मामलों में कई कार्यों को संसाधित करेगा, जबकि कई कोने के मामलों को "पर्यावरण की एक विशेषता" में संसाधित करेगा। यदि कोई सीपीयू का उपयोग कर रहा था जो संख्यात्मक अतिप्रवाह हुआ तो आग पकड़ लेगा और सीपीयू को आग लगने से बचाना चाहता था, किसी को संख्यात्मक अतिप्रवाह से बचने के लिए कोड लिखना होगा। यदि, हालांकि, एक सीपीयू का उपयोग कर रहे थे जो पूरी तरह से दो-पूरक फैशन में मूल्यों को ख़ुशी से काट देगा, तो ऐसे मामलों में ओवरफ्लो से बचने की ज़रूरत नहीं थी जहां इस तरह के ट्रंकेशन को स्वीकार्य व्यवहार में परिणाम मिलेगा।
आधुनिक सी चीजों को एक कदम आगे ले जाता है: भले ही कोई एक प्लेटफ़ॉर्म को लक्षित कर रहा हो, जो स्वाभाविक रूप से संख्यात्मक अतिप्रवाह जैसी चीज़ के लिए एक व्यवहार को परिभाषित करेगा जहां मानक कोई आवश्यकता नहीं लगाएगा, एक कार्यक्रम के एक हिस्से में अतिप्रवाह अन्य भागों के व्यवहार को प्रभावित कर सकता है। मनमाने ढंग से कार्यक्रम में समय और करणीय के नियमों से बंधे नहीं। उदाहरण के लिए, कुछ इस तरह से विचार करें:
uint32_t test(uint16_t x)
{
if (x < 50000) foo(x);
return x*x; // Note x will promote to "int" if that type is >16 bits.
}
एक "आधुनिक" सी कंपाइलर जैसा कुछ ऊपर दिया गया है, यह निष्कर्ष निकाल सकता है कि चूंकि x * x की गणना अतिप्रवाह है यदि x 46340 से अधिक है, तो यह बिना शर्त के "foo" कॉल कर सकता है। ध्यान दें कि यहां तक कि अगर x के दायरे से बाहर होने पर किसी प्रोग्राम को असामान्य रूप से समाप्त करना स्वीकार्य होगा, या ऐसे मामलों में फ़ंक्शन का कोई भी मूल्य वापस आ सकता है, तो आउट-ऑफ-रेंज x के साथ फू () कॉलिंग से नुकसान हो सकता है। या तो उन संभावनाओं के। पारंपरिक सी प्रोग्रामर और अंतर्निहित प्लेटफॉर्म की आपूर्ति से परे कोई सुरक्षा गियर प्रदान नहीं करेगा, लेकिन सुरक्षा गियर को अप्रत्याशित परिस्थितियों से नुकसान को सीमित करने की अनुमति देगा। आधुनिक सी किसी भी सुरक्षा गियर को बाईपास करेगा जो सब कुछ नियंत्रण में रखने पर 100% प्रभावी नहीं है।