1 00:00:00,000 --> 00:00:00,410 2 00:00:00,410 --> 00:00:03,130 >> DAVID J. Malan: Svo kemur í ljós að afrita band er ekki nærri eins 3 00:00:03,130 --> 00:00:05,750 einfalt og afrita frumstætt, eins og int eða fljóta. 4 00:00:05,750 --> 00:00:09,190 Eftir allt, undir hetta band er runa stafir. 5 00:00:09,190 --> 00:00:13,130 Svo afrita streng, því hefur til falið að afrita að heil röð af 6 00:00:13,130 --> 00:00:14,240 stafir. 7 00:00:14,240 --> 00:00:17,470 >> Skulum snúa athygli okkar aftur til að síðasta framkvæmd og rífa út þetta 8 00:00:17,470 --> 00:00:21,470 lína, band T er jafnt og S, þar sem greinilega var ekki nóg. 9 00:00:21,470 --> 00:00:24,440 Skulum skipta um það með línu sem lítur í staðinn, eins og þetta. 10 00:00:24,440 --> 00:00:34,020 String T fær malloc snærisspotta lengd s auk 1 sinnum á stærð við bleikju. 11 00:00:34,020 --> 00:00:36,320 >> Nú er það vitna dálítið fara á í þessari línu af kóða. 12 00:00:36,320 --> 00:00:39,330 First, malloc, stutt fyrir minni úthlutun, og 13 00:00:39,330 --> 00:00:40,700 virka ekki bara þessi. 14 00:00:40,700 --> 00:00:44,740 Gefið heiltala, skilar það þér á heimilisfang klumpur af minni 15 00:00:44,740 --> 00:00:45,960 sem margir bæti. 16 00:00:45,960 --> 00:00:50,090 Á meðan, the band lengd s plús 1 er ætlað að gefa til kynna að við viljum sem 17 00:00:50,090 --> 00:00:54,690 margir bæti og s occupies nú þegar, þ.mt null Terminator þess, að 18 00:00:54,690 --> 00:00:57,050 sviga 0 í lok streng. 19 00:00:57,050 --> 00:01:00,170 >> Á sama tíma, ég er ekki endilega man hversu stór bleikju er, jafnvel 20 00:01:00,170 --> 00:01:04,340 þó á flestum kerfum það er einfaldlega 1 bæti, þannig að ég hringi stærð bleikju til 21 00:01:04,340 --> 00:01:08,210 reikna út breytilega hversu stór einstaklingur eðli er. 22 00:01:08,210 --> 00:01:12,550 Þegar margfaldað saman, fæ ég aftur að heildarfjöldi bytes sem ég þarf. 23 00:01:12,550 --> 00:01:14,680 >> En hvað ef malloc nær ekki að skila minni við þurfum? 24 00:01:14,680 --> 00:01:16,730 Ég myndi besta athuga fyrir það sem hér segir. 25 00:01:16,730 --> 00:01:23,330 Ef t jafnt null, þá er ég fyrst að fara til að losa s, minni aftur eftir fá 26 00:01:23,330 --> 00:01:27,120 band, og þá ætla ég að skila 1, að signify villa. 27 00:01:27,120 --> 00:01:30,360 >> En ef allt er vel, ég ætla að halda áfram að nota fjögurra lykkja og kunnugt er 28 00:01:30,360 --> 00:01:31,110 eins og hér segir. 29 00:01:31,110 --> 00:01:36,000 Fyrir int i fá 0, n er jafnt og band lengd s. 30 00:01:36,000 --> 00:01:40,350 Ég ætla að gera þetta svo lengi sem ég er minna en eða jafnt n þannig að ég 31 00:01:40,350 --> 00:01:44,460 iterate upp í gegnum og með null stöðvast eðli í s. 32 00:01:44,460 --> 00:01:47,450 >> Og á hverri ítrun, ég er fara að hækka i. 33 00:01:47,450 --> 00:01:52,496 Á sama tíma, inni þessa lykkju, afrita s i-th eðli í i-th T 34 00:01:52,496 --> 00:01:59,310 staðsetningu, nægir það til að gera t krappi ég fær s krappi i. 41 00:01:59,320 --> 00:02:02,750 >> Skulum nú spara, safna saman, og keyra þetta nýja áætlun. 42 00:02:02,750 --> 00:02:06,690 Gerðu afrit 1 punktur skástrik eintak 1. 43 00:02:06,690 --> 00:02:09,460 Og ég ætla að segja eitthvað eins og halló í öllum lágstöfum. 44 00:02:09,460 --> 00:02:12,280 Og sem betur fer, í þetta sinn minn Upprunalega óbreytt. 45 00:02:12,280 --> 00:02:13,660 halló í öllum lágstöfum. 46 00:02:13,660 --> 00:02:15,540 En afrit er reyndar eignar. 47 00:02:37,120 --> 00:02:38,963