memmove के बारे में पढ़ते समय मैंने पढ़ा कि यह स्मृति ओवरलैप्स को संभाल सकता है लेकिन मैं यह समझने में असमर्थ हूं कि दो स्ट्रिंग्स के बीच एक मेमरी ओवरलैप कैसे हो सकता है और यह फ़ंक्शन अभी भी स्मृति के ब्लॉक को सही तरीके से कैसे कॉपी कर सकता है।मेमोरी ओवरलैप कैसे होता है और इसे कैसे नियंत्रित किया जाता है?
उत्तर
"मेमोरी ओवरलैप" स्वयं ही नहीं होता है। यह आप हैं जो memmove
फ़ंक्शन को स्मृति क्षेत्रों के साथ आपूर्ति कर सकते हैं जो ओवरलैप करते हैं। दो पॉइंटर्स पर उसी सरणी लें और आप आसानी से ओवरलैपिंग मेमोरी क्षेत्रों के साथ समाप्त हो सकते हैं।
बेशक, आप यूनियनों के माध्यम से आसानी से ओवरलैपिंग ऑब्जेक्ट्स भी बना सकते हैं।
यह स्पष्ट नहीं है कि प्रश्न के दूसरे भाग से आपका क्या मतलब है ("यह फ़ंक्शन अभी भी स्मृति के ब्लॉक को सही तरीके से कैसे कॉपी कर सकता है")। आप यहाँ समस्या कहां देखते हैं?
memmove(p+1, p, 42);
कौन सा बाइट्स अंत में शुरू कर चलती की आवश्यकता है। Memcpy() इसके बारे में एक गड़बड़ बनाता है।
कड़ाई से बोलते हुए, 'memcpy' ने इस तरह से उपयोग किए जाने पर व्यवहार को अपरिभाषित किया है। यह कल्पनापूर्वक काम कर सकता है, उदाहरण के लिए यदि यह लिखा गया था कि पीछे की प्रतिलिपि बनाना तेजी से है, या यदि 'memcpy' को' memmove' 'पर कॉल के रूप में लागू किया गया था, लेकिन आपको ऐसी चीजों पर कभी भरोसा नहीं करना चाहिए। :-) –
अगर वह memmove जानता है तो कभी भी memcpy का उपयोग क्यों करेगा;) –
क्योंकि memcpy() तेज है। –
- 1. कैसे ConcurrentDictionary का उपयोग किया जाता है और इसे क्रमबद्ध कैसे किया जाता है?
- 2. प्रोसेस आकार कैसे निर्धारित किया जाता है?
- 3. बिगडिसीमल कैसे कार्यान्वित किया जाता है?
- 4. एसएमपी पर हस्तक्षेप कैसे किया जाता है?
- 5. घुंघराले ब्रेसिज़ के माध्यम से असाइनमेंट क्या कहा जाता है? और इसे नियंत्रित किया जा सकता है?
- 6. डिफ़ॉल्ट रूप से _GNU_SOURCE परिभाषित क्यों किया जाता है और इसे कैसे बंद किया जाए?
- 7. क्या होता है जब प्रक्रिया को फोर्क किया जाता है?
- 8. नामस्थान क्या है और इसे PHP में कैसे कार्यान्वित किया जाता है?
- 9. आरईएसटी वास्तुकला वास्तव में क्या है और इसे रेल में कैसे कार्यान्वित किया जाता है?
- 10. getView() विधि का उपयोग कैसे किया जाता है और इसे कहां कहा जा रहा है?
- 11. मॉलोक और निःशुल्क कैसे कार्यान्वित किया जाता है?
- 12. 2 अनुक्रमों के बीच ओवरलैप कैसे ढूंढें, और इसे
- 13. मेमोरी चेतावनी और दुर्घटना: इसे कैसे संभालें
- 14. ऑब्जेक्ट.गेटहाशकोड() सीएलआर और जेवीएम में कैसे कार्यान्वित किया जाता है?
- 15. कैसे खारिज करें पता करेंModalViewControllerAnimated शुरू किया जाता है और यह भी किया जाता है?
- 16. एप्लिकेशन वर्चुअलाइजेशन कैसे कार्यान्वित किया जाता है?
- 17. ओपनआईडी कैसे कार्यान्वित किया जाता है?
- 18. इस कोड में मेमोरी रिसाव कहां है और इसे कैसे ठीक किया जाए?
- 19. वाईफाई पासवर्ड: यह कैसे संग्रहीत किया जाता है और कहां?
- 20. शून्य * मतलब और इसका उपयोग कैसे किया जाता है?
- 21. io_service, इसका उपयोग क्यों और कैसे किया जाता है?
- 22. std :: tuple कैसे कार्यान्वित किया जाता है?
- 23. ImmutableObjectAttribute का उपयोग कैसे किया जाता है?
- 24. "कॉन्स्ट" कैसे कार्यान्वित किया जाता है?
- 25. लेआउट का उपयोग कैसे किया जाता है?
- 26. लेक्सिकल स्कोपिंग कैसे कार्यान्वित किया जाता है?
- 27. pthread_join कैसे कार्यान्वित किया जाता है?
- 28. जावास्क्रिप्ट फ़ाइलों को कैसे लोड और निष्पादित किया जाता है?
- 29. ASP.NET मल्टीथ्रेड कैसे किया जाता है?
- 30. ग्रुप द्वारा काम कैसे किया जाता है?
मुझे नहीं पता कि फ़ंक्शन मेमोरी ओवरलैपिंग समस्या –
कैसे प्रबंधित करेगा यह काम करता है जैसे स्रोत को अन्य बफर में कॉपी किया गया था, फिर गंतव्य पर कॉपी किया गया था। Memcpy() सीधे सीधे गंतव्य के लिए स्रोत कॉपी करता है। – Jefferson