David J. Malan: Taigi paaiškėja, kad Kopijuojant eilutę yra toli gražu ne taip paprasta, kaip kopijavimo primityvus, kaip int ar plūdės. Galų gale, po kapotu eilutė yra sekos simbolių. Taigi kopijuoti eilutę, todėl turi įtraukti kopijavimo kad visą seką simbolių. Leiskite savo ruožtu mūsų dėmesį į tai paskutinis įgyvendinimas ir išplėšti tai linija, styginių t lygu s, kurios aiškiai nepakako. Tegul jį pakeisti eilutę, atrodo, vietoj to, kaip šis. Styginių t gauna malloc stygų ilgį s ir 1 kartų iš char dydis. Dabar yra citata šiek tiek vyksta dėl šio kodo eilutę. Pirma, malloc, trumpas atmintis paskirstymą ir funkcija veikia tik tai. Atsižvelgiant į tai, sveikasis skaičius, jis grįžta į jus ir adresas iš atminties riekė kad daugelis baitai. Tuo tarpu eilutės ilgis s plius 1 yra skirtas nurodyti, kad mes norime, kaip daug baitų pat s, jau užima, įskaitant null terminatorius, Backslash 0 prie eilutės pabaigos. Tuo tarpu, aš nebūtinai prisiminti kaip didelis char yra, net nors daugumoje sistemų tai tiesiog 1 baitų, todėl aš skambinti dydį char į išsiaiškinti, dinamiškai, kaip didelis individualių savybių yra. Kai padauginta kartu, aš grįšiu bendras baitų skaičius, kad man reikia. Bet kas, jei malloc nepavyksta grįžti atmintį turime? Aš geriausia patikrinti, kad taip. Jei t lygu nuliui, tada aš pirmą kartą vyksta nemokamų s, atmintis grįžo GET eilutę, ir tada aš ruošiuosi grįžti 1, reikšti klaidą. Bet jei viskas yra gerai, aš ruošiuosi pradėti naudoti keturis linijos ir pakartoti taip. Dėl int gaunu 0, n lygu string ilgis s. Aš ruošiuosi tai padaryti tol, kol i mažesnis arba lygus n, kad aš kartoti iki per imtinai null pabaigos simbolis s. Ir kiekvienos iteracijos, aš ketina prieaugio i. Tuo tarpu viduje šios linijos, kopijuoti s "i-osios simbolis" T "i-osios vieta, pakanka padaryti k laikiklis i gauna us laikiklis i. Aš geriausia pridėti vieną papildomą linija mano kodas. Visų pirma, todėl, kad aš dabar naudoja malloc, prašydama atminties, tai mano atsakomybė atlaisvinti, kad atmintyje kai aš padaryti su juo, kaip mes reikia atlaisvinti atminties, kad tai mums davė get eilutę. Taigi pačioje pabaigoje šią programą, aš ketiname pridėti vieną papildomą eilutę išlaisvinti k prieš grįžtant 0 nurodyti sėkmę. Leiskite dabar įrašyti, kaupti ir paleisti šią naują programą. Padaryti kopiją 1 taškas velniop kopiją 1. Ir aš pasakyti kažką panašaus Apie visose mažosiomis raidėmis. Ir laimei, šį kartą mano originalas lieka nepakitusi. Apie visose mažosiomis raidėmis. Bet kopija yra, iš tikrųjų, kapitalizuojamos.