דוד י מלאן: אז מתברר כי העתקת מחרוזת היא לא כמעט כמו פשוט כמו העתקה פרימיטיבית, כמו int או לצוף. אחרי הכל, מתחת למכסת מנוע מחרוזת הוא תווים ברצף. אז העתקת מחרוזת, ולכן, יש ל כרוך בהעתקה שכולו הרצף של תווים. בואו נפנה את תשומת הלב שלנו אחזור לזה היישום האחרון ולקרוע את זה קו, מחרוזת לא שווה S, אשר ברור שלא היה מספיק. בואו נחליף אותו בקו ש נראה, במקום, כמו זה. לא מחרוזת מקבל malloc של אורך מחרוזת של בתוספת פעמים 1 שעה בגודל של char. עכשיו יש ציטוט קצת הולכים בקו הזה של קוד. ראשית, malloc, קיצור של זיכרון הקצאה, ו הפונקציה עושה בדיוק את זה. בהינתן מספר שלם, מחזיר לך כתובת של נתח של זיכרון בתים שרבים. בינתיים, אורך המחרוזת של ים בתוספת 1 נועד כדי לציין שאנחנו רוצים כמו בתים רבים כמו ים כבר תופס, כולל שליחות קטלנית שלה ריקה, קו נטוי הפוך 0 בסוף המחרוזת. בינתיים, אני לא זוכר שבהכרח עד כמה גדול הוא char, אפילו אם כי ברוב המערכות זה פשוט 1 בתים, ולכן אני אקרא גודל של char כדי להבין באופן דינמי עד כמה גדול אופי אדם הוא. ברגע שהתרביתי ביחד, אני חוזר מספר כולל של בתים שאני צריך. אבל מה אם malloc נכשל להחזיר את הזיכרון שאנחנו צריכים? הייתי הטוב ביותר לבדוק שכדלקמן. אם לא שווה אפס, אז אני הולך ראשון לים חופשי, חזר הזיכרון על ידי גט מחרוזת, ולאחר מכן אני הולך בתמורה 1, כדי לסמן שגיאה. אבל אם הכל טוב, אני הולך להמשיך להשתמש בארבע לולאה ולחזר באופן הבא. עבור int אני מקבל 0, n שווים אורך המחרוזת של s. אני הולך לעשות את זה כל עוד הוא אני קטן או שווה ל-n, כך שאני לחזר דרך וכולל אופי המסתיים null בים. ועל כל איטרציה, אני הולך להגדיל i. בינתיים, בתוך לולאה זו, העתק ים של הדמות של i-ה לi-th של t מיקום, זה מספיק כדי לעשות את t סוגר אני מקבל ים סוגר i. אני הכי טוב הייתי להוסיף אחת נוסף שורת הקוד שלי. בפרט, כי אני משתמש כעת malloc, מבקש זיכרון, זה שלי אחריות כדי לפנות זיכרון ש כשאני סיימתי עם זה, בדיוק כמו שאנחנו יש לשחרר זיכרון זה ניתנו לנו על ידי מחרוזת גט. אז בסופו של הדבר מאוד של תכנית זו, אני הולך להוסיף שורה אחת נוספת לשחרר לא לפני ההחזרה 0 כדי לציין הצלחה. בואו עכשיו להציל, לקמפל, ו להפעיל את התכנית חדשה. הפוך את עותק לוכסן נקודת עותק 1 1. ואני אגיד משהו כמו שלום בכל אותיות קטנות. ותודה לאל, זה זמן שלי מקורי נשאר ללא שינוי. שלום בכל אותיות קטנות. אבל העותק הוא, אכן, באותיות גדולות.