यहां तक कि अगर नि: शुल्क की तुलना में बहुत अलग हो प्रतीत नहीं होता है, तो यह आपको एक बहुत बाद में, जबकि कीड़े के लिए अपने कोड शिकार में मदद मिलेगी।
बस सोचें कि क्या होता है यदि आप फ्री एंड नील का उपयोग नहीं करते हैं और फिर कहीं भी आपके कोड में आप एक मुक्त वस्तु तक पहुंचते हैं। यदि आप भयानक भाग्यशाली हैं, तो आपका प्रोग्राम क्रैश हो जाएगा जब यह घर चलाता है (हाँ यह दुर्घटना एक 'अच्छा' दुर्घटना है)। यदि आप थोड़ा दुर्भाग्यपूर्ण हैं तो यह ग्राहक के कंप्यूटर में दुर्घटनाग्रस्त हो जाएगा। फिर असली दर्द शुरू होता है!
जैसा कि अन्य पहले से ही इंगित करते हैं, फ्री एंड नील स्वयं खराब नहीं है। FreeAndNil फ़ंक्शन टूटा/अप्रचलित नहीं है या ऐसा कुछ नहीं है और यह आपके कोड को दूषित नहीं करेगा। कुछ लोग तर्क देंगे कि फ्री एंड नील पर भरोसा करने से डिज़ाइन दोष उत्पन्न हो सकता है या संकेत हो सकता है।
मैं स्थानीय चर पर फ्री एंडनल EVEN का उपयोग करता हूं। स्थानीय चर पर इसका उपयोग करना POINTLESS लगता है क्योंकि जैसे ही आप प्रक्रिया से बाहर निकलते हैं वैरिएबल गायब हो जाता है। हालांकि, यह एक अच्छा अभ्यास है कि आपको केवल कुछ अतिरिक्त बाइट खर्च होंगे। सोचें कि आप बाद की तारीख में प्रक्रिया के अंत में अधिक कोड जोड़ सकते हैं, उस बिंदु के बाद जहां आपने ऑब्जेक्ट को मुक्त किया था, कोड जो (स्पष्ट रूप से गलती से) मुक्त ऑब्जेक्ट तक पहुंचने का प्रयास करेगा। अगर वस्तु शून्य, बाबम, तत्काल एवी (example) थी।
नोट: कुछ लोग कह सकते हैं कि उन्होंने कभी भी एक मुक्त वस्तु का उपयोग नहीं किया (मूल रूप से इसका अर्थ है कि वे कभी गलतियां नहीं करते हैं) इसलिए उन्हें इस मामले में फ्री एंड नील की आवश्यकता नहीं है। खैर, मैं रोबोट नहीं हूँ। मैं गलती करता हूँ
कुछ रूढ़िवादी लोग कह सकते हैं कि यह सरल कॉल रैम और सीपीयू संसाधनों को बर्बाद कर देगा। मैं कभी भी कभी नहीं कहूंगा कि स्मृति/सीपीयू को संरक्षित करना बुरा है। मैं छोटे/तेज़/मोनोलिथिक अनुप्रयोगों को भी वितरित करना चाहता हूं!लेकिन मुझे नहीं लगता कि FreeAndNil का उपयोग करने से हटाने से कुछ बाइट्स और सीपीयू चक्र (सचमुच कुछ) बर्बाद हो जाएंगे। यह दिन-दर-दिन जीवन में एक वास्तविक अंतर नहीं करेगा, खासकर जब आपको लगता है कि एक ग्राफिक संसाधन जैसे टीबटन ग्लिफ़ या आपके प्रोग्राम का आइकन 50-300 केबी ले सकता है, और आपके प्रोग्राम में इनमें से कई दर्जन हो सकते हैं। http://tech.turbu-rpg.com/106/delphi-memory-management-made-simple
विपक्ष
एलन Bauer यहाँ कैसे उपयोग करने के बारे एक उदाहरण दिखाता है:
पेशेवरों
मेसन व्हीलर पहले से ही एक लेख है कि 'आलसी रचना' विधि FreeAndNil का उपयोग करता है कि हम सब एक दिन में प्रयोग किया जाता से पता चलता को इंगित करता है एक निश्चित मामले (एक दृश्य घटक के विनाशक) में फ्री एंड नील और वास्तव में खराब: http://blogs.embarcadero.com/abauer/2010/02/16/38916
एलन बताता है कि फ्री एंड नील को बेहतर तरीके से बदला जाना चाहिए। उदाहरण के लिए फास्टएमएम के साथ। हालांकि, यहां एक आसान कोड है जहां फास्टएमएम विफल रहता है जबकि फ्री एंड नील दिन बचाता है: http://codeverge.com/embarcadero.delphi.rtl/freeandnil-to-use-or-not-to-use/1067733
चूंकि प्रो और फ्री एंड नील के खिलाफ दोनों तर्क हैं, तो यह तय करना आपके लिए है कि यह पसंद है या नहीं।
यहां एक विस्तारित चर्चा: https://forums.embarcadero.com/thread.jspa?threadID=33112 –
@ थ्रेड को कई अन्य लोगों की तरह थ्रेड करें, – mjn
नई चर्चाएं गैर-तकनीक [यहां] पर हैं (https: //forums.embarcadero.com/thread.jspa?threadID=65321&tstart=15) और [यहां] (https://forums.embarcadero.com/thread.jspa?threadID=63906&tstart=0) – mjn