प्रदर्शन कारणों से, मानक स्ट्रिंग फ़ंक्शंस के कार्यान्वयन अक्सर स्वाभाविक रूप से गठबंधन रजिस्टर-चौड़ाई वाले हिस्सों में डेटा को संसाधित करेंगे। इससे स्रोत डेटा ऑब्जेक्ट्स के अंत में पढ़ने की पहुंच हो सकती है, लेकिन संरेखण गारंटी देता है कि कोड मेमोरी अपवादों के संबंध में एक निष्पक्ष कार्यान्वयन की तरह व्यवहार करता है। प्रत्येक व्यापक पहुंच एक पृष्ठ के भीतर निहित होती है, और कोई भी पृष्ठ स्पर्श नहीं होता है जिसे बाइट-वार कार्यान्वयन द्वारा भी स्पर्श नहीं किया जाएगा।
मैं दावा करता हूं कि इस तरह के कार्यान्वयन सी के रूप में कवर किए गए हैं, यानी, वे वैसे ही व्यवहार करते हैं जैसे वे "कार्यात्मक विनिर्देशों का पालन कर रहे थे।
ऐसे अनुकूलित कार्यान्वयन का एक उदाहरण OpenSolaris's strcmp()
for SPARC v8 होगा। यह कोड है जिसे मैंने कुछ पंद्रह साल पहले लिखा था, साथ ही अन्य प्रदर्शन-अनुकूलित स्ट्रिंग फ़ंक्शंस के साथ।
विभिन्न मेमोरी चेकर उपकरण इस तरह के कोड के बारे में शिकायत करेंगे, हालांकि, इसका उपयोग आवंटित डेटा ऑब्जेक्ट की सीमाओं से परे पहुंच का कारण बन सकता है, भले ही आउट-ऑफ-बाउंड रीडिंग डिज़ाइन डिज़ाइन द्वारा हानिरहित हो।
फोर्टिफ़ा गलत है। कम से कम उचित के लिए, यह 'strncmp() 'के मानक अनुरूप कार्यान्वयन है। – alk
जब तक कि मैं * बहुत * गलत नहीं हूं, 'strncmp()' को केवल आपके उदाहरण में प्रत्येक स्ट्रिंग से एक 'char' की तुलना करने की आवश्यकता होगी। मैं झूठी सकारात्मक दूसरी। – EOF
कृपया एक [एमसीवी] प्रदान करें और देखें [पूछें]। इसमें फोर्टिफ़ाई का पुनर्मूल्यांकन शामिल होगा। या एचपी से पूछें कि यह आवश्यक जानकारी के साथ झूठी सकारात्मक क्यों उत्पन्न करता है। – Olaf