यदि लाइब्रेरी फ़ंक्शन जैसे उदा। malloc
को फिर से कार्यान्वित किया गया है, फिर उस नाम के साथ दो प्रतीक हैं, एक स्थानीय ऑब्जेक्ट फ़ाइल में से एक और सिस्टम लाइब्रेरी में से एक है। जब से कोई फ़ंक्शन उदा। stdio
का उपयोग किया जाता है, जो malloc
(और क्यों) कहता है?यदि एक मानक लाइब्रेरी फ़ंक्शन को फिर से कार्यान्वित किया जाता है, तो दोनों में से कौन सा कहलाता है?
यदि एक मानक लाइब्रेरी फ़ंक्शन को फिर से कार्यान्वित किया जाता है, तो दोनों में से कौन सा कहलाता है?
उत्तर
लिंक व्यवहार एक सामान्य तरीके से, यह है:
- सभी प्रतीकों वस्तु फ़ाइलों में परिभाषित शामिल करें।
- फिर libs में वस्तुओं का उपयोग कर अपरिभाषित लोगों को हल।
इसलिए, यदि मॉलोक को ऑब्जेक्ट फ़ाइल के रूप में पुन: कार्यान्वित और लिंक किया गया है, तो ऑब्जेक्ट फ़ाइल में संस्करण मानक पुस्तकालयों में संस्करण को ओवरराइड करेगा। हालांकि, यदि नया मॉलोक लाइब्रेरी के रूप में जुड़ा हुआ है, तो यह आदेश जोड़ने वाले पुस्तकालयों पर निर्भर करता है।
एक और तरीका है, गुंजाइश के रूप में जीएनयू binutils पर विचार, पुस्तकालय कार्यों ओवरराइड करने के लिए --wrap पैरामीटर का उपयोग कर समारोह रैप करने के लिए है: https://ftp.gnu.org/old-gnu/Manuals/ld-2.9.1/html_node/ld_3.html
--wrap ld विकल्प हम दोनों कार्यों से जुड़ा हुआ हो सकता है का उपयोग करके और रैपर फ़ंक्शन लपेटकर कॉल करने में सक्षम होगा।
जोड़ने आदेश भी कमांड लाइन पर निर्भर करता है आदेश पैरामीटर। तो मैं यहां विचार कर रहा हूं कि libs वस्तुओं के बाद सूचीबद्ध हैं क्योंकि, सामान्य रूप से, वस्तुओं से पहले पुस्तकालयों को रखने का अर्थ नहीं है क्योंकि उनका उद्देश्य उन लोगों द्वारा मांगे गए लापता प्रतीकों की आपूर्ति करना है।
एक जवाब है कि आप malloc को बदलने के लिए कोशिश कर रहा द्वारा मुसीबत का एक बहुत भयंकर में अपने आप को हो रही है है। वहां मत जाओ इसके बारे में भी मत सोचो। खासकर अगर आपको स्टैक ओवरफ्लो पर प्रश्न पूछने की ज़रूरत है, तो इसके बारे में भी मत सोचो।
एक और जवाब है कि आप अपरिभाषित व्यवहार लागू कर रहे हैं, और संभावना परिणाम malloc समारोह बुलाया जाएगा कि है कि आप सबसे अधिक नुकसान होगा है। यदि आप भाग्यशाली हैं, जबकि विकासशील हैं। यदि आपका कोड कम भाग्यशाली है, तो आपका कोड ग्राहकों के हाथ में है। ऐसा मत करो
नए नामों से malloc आसपास रैपर लेखन काफी खराब है। मॉलोक को बदलने की कोशिश करना पागलपन है।
दुर्भाग्यवश, कोई वास्तविक विकल्प नहीं है। पोर्ट करने के लिए एक उपकरण 'sbrk' * और * मानक लाइब्रेरी फ़ंक्शंस का उपयोग कर रहा है। यह आज के सिस्टम पर काम नहीं कर सकता है। तो या तो sbrk प्रतिस्थापित किया गया है (अधिकांश टूल कोड को फिर से लिखना है), या एक स्थानीय मॉलोक प्रदान किया जाता है, जो 'sbrk' का उपयोग नहीं करता है। एक समस्या बाकी है: स्थानीय मॉलोक एएसएएन के साथ काम नहीं करता है, भले ही वह स्थानीय मॉलोक सही लगता है। वर्तमान में यह अस्पष्ट है, क्यों यह एएसएएन के साथ काम नहीं करता है। – user3224237
- 1. यदि एंड्रॉइड एक सेवा को पुनरारंभ करता है तो फिर से कॉल किया जाता है?
- 2. कक्षा GAD_GTMStringEncoding दोनों <framework> और <app> दोनों में कार्यान्वित किया गया है। इन दोनों में से कोई एक प्रयोग किया जाएगा। कौन सा अपरिभाषित
- 3. कक्षा दोनों में लागू की गई है, दोनों में से एक का उपयोग किया जाएगा। कौन सा अपरिभाषित
- 4. ओपनएसएसएल - जांचें कि कौन सा इंजन एक फ़ंक्शन है और यदि हार्डवेयर वास्तव में उपयोग किया जाता है?
- 5. jQuery में कौन सा हुक प्रदान किया जाता है?
- 6. कक्षा _NSZombie__GEOTileKeyWrapper दोनों में लागू किया गया है ?? तथा ??। इन दोनों में से कोई एक प्रयोग किया जाएगा। कौन सा अपरिभाषित है
- 7. बनाम अधिकतम आयु की अवधि समाप्त हो जाती है, यदि दोनों को HTTP प्रतिक्रिया में घोषित किया जाता है तो कौन सा प्राथमिकता लेता है?
- 8. कौन सा SendAsync विधि है जब एक HttpClientHandler HttpClient में भेजा जाता है कहा जाता है
- 9. यदि नोडज गैर ब्लॉकिंग आईओ का उपयोग करता है, तो fs.readFileSync कैसे कार्यान्वित किया जाता है?
- 10. कौन सा (यदि कोई है) स्थानीय रूप से परिभाषित प्रतिनिधियों को विधि कॉल के बीच कैश किया जाता है?
- 11. 'क्लास FIFinderSyncExtensionHost दोनों में कार्यान्वित किया जाता ...' MacOS उच्च सिएरा
- 12. कौन सा जावास्क्रिप्ट फ़ंक्शन प्लेसमेंट बेहतर है?
- 13. std :: tuple कैसे कार्यान्वित किया जाता है?
- 14. एमएस-डॉस में कौन सा फ़ॉन्ट उपयोग किया जाता है?
- 15. कौन सा ठोस सिद्धांतों का उल्लंघन किया जाता है?
- 16. malloc() को आंतरिक रूप से कैसे कार्यान्वित किया जाता है?
- 17. पाइथन में आंतरिक रूप से नामित टुपल्स को कैसे कार्यान्वित किया जाता है?
- 18. यदि एक योजक अभिव्यक्ति का पहला ऑपरेंड दोनों पॉइंटर और पूर्णांक में परिवर्तनीय है, तो कौन सा रूपांतरण चुना जाता है?
- 19. सी में व्यापक रूप से कौन सा डेटा संरचना का उपयोग किया जाता है?
- 20. कौन सा अजगर फिर से मॉड्यूल एक पर्ल नियमित अभिव्यक्ति
- 21. कौन सा चेकसम का उपयोग किया जाता है
- 22. मानक ज़िप में कौन सा एल्गोरिदम उपयोग कर रहा है?
- 23. कौन सा जावा-लाइब्रेरी संचयी मानक सामान्य वितरण फ़ंक्शन की गणना करता है?
- 24. मैं कैसे पता लगा सकता हूं कि कौन सा मॉड्यूल नाम से आयात किया जाता है?
- 25. क्या जावा ऑब्जेक्ट में नल वैरिएबल एंटी-पैटर्न है? यदि ऐसा है तो कौन सा?
- 26. एंड्रॉइड टाइटल बार जब एप्लिकेशन को फिर से शुरू किया जाता है तो
- 27. नेटबीन द्वारा कौन सा जावा कंपाइलर उपयोग किया जाता है?
- 28. कैसे पता चलेगा कि संघ से कौन सा चर इस्तेमाल किया जाता है?
- 29. सी में x86 फ़ंक्शन कॉल के बाद कौन से रजिस्टरों को पुनर्स्थापित किया जाता है?
- 30. एटीएन 2 .NET में कैसे कार्यान्वित किया जाता है?
पारंपरिक मॉडल इस जगह 'malloc' भी आंतरिक संदर्भ के लिए, कि मॉड्यूल और बाद में जोड़ने के क्रम में पुस्तकालयों पहले वाले ओवरराइड है। निस्संदेह जटिलताएं हो सकती हैं, जैसे मैक्रो रैपर ट्रेसिंग जानकारी जोड़ना, या आवंटकों को अतिरिक्त संकेत प्रदान करने वाले आंतरिक रूपों का उपयोग। – doynax
अगर मैं समझता हूं कि सही है तो इसका मतलब यह होगा कि आमतौर पर सिस्टम लाइब्रेरी प्रतीक का उपयोग किया जाएगा। लेकिन परीक्षणों से पता चलता है कि स्थानीय फ़ंक्शन (पुन: कार्यान्वयन) का उपयोग इसके बजाय किया जाता है। – user3224237
यह दूसरी तरफ है। ऑब्जेक्ट फाइलें सूचीबद्ध सूची में पुस्तकालयों से पहले पिछली बार लिंक की गई हैं। – doynax