पृष्ठभूमि: मेरे पास एक छोटी दिनचर्या है जो fgets(character, 2, fp)
की नकल करती है सिवाय इसके कि यह एक धारा के बजाय स्ट्रिंग से एक वर्ण लेती है। newBuff गतिशील रूप से आवंटित स्ट्रिंग को पैरामीटर के रूप में पारित किया गया है और चरित्र char character[2]
के रूप में घोषित किया गया है।वालग्रिंड चेतावनी: क्या मुझे इसे गंभीरता से लेना चाहिए
नियमित:
character[0] = newBuff[0];
character[1] = '\0';
strcpy(newBuff, newBuff+1);
strcpy प्रत्येक चरित्र के रूप में सूचना के नुकसान replicates से पढ़ा जाता है।
समस्या: वेलग्रिंड मुझे के बारे में इस गतिविधि ने चेतावनी दी है, "स्रोत और गंतव्य strcpy में ओवरलैप (0x419b818, 0x419b819)"।
क्या मुझे इस चेतावनी के बारे में चिंता करनी चाहिए?
भले ही ऑर्डरिंग बाएं से दाएं हो, फिर भी अनलॉकिंग/रीडरिंग और प्रतिलिपि की बड़ी-बाइट इकाइयों के कारण समस्याएं हो सकती हैं। मैं 'स्ट्रैपी' के इस उपयोग को अत्यधिक असुरक्षित और उसी पुस्तकालय के विभिन्न संस्करणों के बीच भी तोड़ने की संभावना, या विभिन्न कंपाइलरों के साथ अलग-अलग निर्माणों पर भी विचार करता हूं। –
@ आर .. मैं सहमत हूं, विशेष रूप से बड़े-से-बाइट इकाइयों के बारे में बिंदु के साथ। बस स्पष्ट होने के लिए, मैं सहमत हूं कि कोड गलत है और बदला जाना चाहिए। – asveikau