डेविड जे मालन: तो यह पता चला है कि एक स्ट्रिंग नकल के रूप में लगभग नहीं है एक आदिम नकल के रूप में सरल एक पूर्णांक या एक नाव की तरह. आखिर, हुड के नीचे एक स्ट्रिंग एक दृश्य वर्ण है. तो एक स्ट्रिंग नकल, इसलिए, के लिए है उस पूरे दृश्य की नकल शामिल अक्षर. चलो कि वापस करने के लिए हमारे ध्यान में बारी पिछले कार्यान्वयन और इस चीर बाहर रेखा, स्ट्रिंग टी, एस के बराबर होती है स्पष्ट रूप से पर्याप्त नहीं था. की एक पंक्ति के साथ की जगह दो कि इस तरह, बजाय, लग रहा है. स्ट्रिंग टी स्ट्रिंग लंबाई की की malloc हो जाता है एक चार के एस प्लस 1 बार आकार. अब जा रहा एक सा भाव नहीं है कोड की इस पंक्ति में पर. सबसे पहले, malloc, कम करने के लिए स्मृति आवंटन, और समारोह करता है कि बस. एक पूर्णांक को देखते हुए, यह आप के लिए रिटर्न की स्मृति का एक हिस्सा का पता कि कई बाइट्स. इस बीच, स्ट्रिंग एस की लंबाई प्लस 1 हम जैसा चाहते हैं कि यह इंगित करने के लिए है पहले से ही रह रहे हैं के रूप में कई बाइट्स, इसके अशक्त टर्मिनेटर, सहित एक स्ट्रिंग के अंत में बैकस्लैश 0. इस बीच, मैं यह जरूरी याद नहीं है एक चार भी, कितना बड़ा है सबसे प्रणालियों पर यह केवल 1 हालांकि बाइट, तो मैं करने के लिए चार का आकार फोन करता हूँ गतिशील रूप से यह पता लगाने के लिए कितना बड़ा एक व्यक्ति के चरित्र है. एक बार एक साथ गुणा, मैं वापस जाओ जरूरत है कि मैं बाइट्स की कुल संख्या. लेकिन malloc के लिए क्या विफल रहता है हम जरूरत स्मृति वापसी? मैं के रूप में सबसे अच्छा है कि के लिए जांच होगी. टी बातिल के बराबर होती है, तो मैं पहले जा रहा हूँ नि: शुल्क एस के लिए, स्मृति प्राप्त करके लौटे स्ट्रिंग, और फिर मैं जा रहा हूँ त्रुटि दर्शाता है, 1 वापसी. सब कुछ ठीक है लेकिन अगर मैं आगे बढ़ने के लिए जा रहा हूँ एक चार पाश का उपयोग करें और पुनरावृति करने के लिए इस प्रकार है. Int के लिए मैं 0, एन बराबरी पाने एस की स्ट्रिंग लंबाई. मैं इतने लंबे समय मैं है के रूप में यह करने के लिए जा रहा हूँ से भी कम या n के बराबर है, ताकि मैं के माध्यम से और सहित पुनरावृति एस में अशक्त समाप्त चरित्र. और प्रत्येक यात्रा पर, मैं हूँ मैं वेतन वृद्धि करने जा रही है. इस बीच, इस लूप के अंदर, कॉपी टी i-वीं में है की मैं वें चरित्र स्थान, यह टी करने के लिए suffices ब्रैकेट मैं ब्रैकेट मैं हो जाता है. मैं सबसे अच्छा एक अतिरिक्त जोड़ना चाहते हैं मेरे कोड के लिए लाइन. विशेष रूप से, क्योंकि अब मैं उपयोग कर रहा हूँ malloc, स्मृति के लिए पूछ रही है, यह मेरा है कि स्मृति को मुक्त करने की जिम्मेदारी मैं इसके साथ काम कर रहा हूँ, बस हमें पसंद स्मृति को मुक्त किया जाना चाहिए है मिल स्ट्रिंग ने हमें दिया. इसलिए इस कार्यक्रम के अंत में, मैं कर रहा हूँ एक अतिरिक्त लाइन जोड़ने के लिए जा लौटने से पहले t मुक्त करने के लिए 0 सफलता से संकेत मिलता है. चलो अब, को बचाने के संकलन करते हैं, और इस नए कार्यक्रम चलाते हैं. नकल 1 डॉट स्लेश प्रतिलिपि 1 बनाओ. और मैं कुछ तरह कहूँगा हैलो सभी लोअरकेस में. और शुक्र है, इस बार मेरी मूल अपरिवर्तित बनी हुई है. हैलो सभी लोअरकेस में. लेकिन कॉपी, वास्तव में, पूंजीकृत है.