1 00:00:00,000 --> 00:00:00,410 2 00:00:00,410 --> 00:00:03,130 >> DAVID J. Malan: Felly, mae'n ymddangos bod Nid yw copïo llinyn bron mor 3 00:00:03,130 --> 00:00:05,750 syml fel copïo yn cyntefig, fel int neu fflôt. 4 00:00:05,750 --> 00:00:09,190 Wedi'r cyfan, o dan y cwfl llinyn yn gymeriadau dilyniant. 5 00:00:09,190 --> 00:00:13,130 Felly, copïo llinyn, felly, yn gorfod yn golygu copïo y dilyniant cyfan o 6 00:00:13,130 --> 00:00:14,240 cymeriadau. 7 00:00:14,240 --> 00:00:17,470 >> Gadewch i ni droi ein sylw yn ôl at y gweithredu diwethaf ac RIP i maes hon 8 00:00:17,470 --> 00:00:21,470 llinell, t llinyn hafal, sy'n amlwg, nid oedd yn ddigonol. 9 00:00:21,470 --> 00:00:24,440 Gadewch i ni ddisodli gyda llinell sy'n edrych, yn lle hynny, fel hyn. 10 00:00:24,440 --> 00:00:34,020 Llinynnol t yn cael malloc hyd cyfres o s ac 1 gwaith maint golosg. 11 00:00:34,020 --> 00:00:36,320 >> Nawr mae dyfyniad ychydig yn mynd ymlaen yn y llinell hon o god. 12 00:00:36,320 --> 00:00:39,330 Yn gyntaf, malloc, byr ar gyfer cof dyrannu, ac mae'r 13 00:00:39,330 --> 00:00:40,700 swyddogaeth yn gwneud hynny. 14 00:00:40,700 --> 00:00:44,740 O ystyried cyfanrif, mae'n dychwelyd i chi cyfeiriad darn o cof am 15 00:00:44,740 --> 00:00:45,960 bod llawer o bytes. 16 00:00:45,960 --> 00:00:50,090 Yn y cyfamser, mae hyd cyfres o s ac 1 i fod i ddangos ein bod yn am i gymaint 17 00:00:50,090 --> 00:00:54,690 llawer o bytes fel s eisoes yn meddiannu, gan gynnwys ei terminator null, y 18 00:00:54,690 --> 00:00:57,050 slaes 0 ar ddiwedd y llinyn. 19 00:00:57,050 --> 00:01:00,170 >> Yn y cyfamser, nid wyf o reidrwydd yn cofio pa mor fawr golosg yw, hyd yn oed 20 00:01:00,170 --> 00:01:04,340 er bod ar y rhan fwyaf o systemau, mae'n syml 1 byte, felly byddaf yn galw maint y torgoch i 21 00:01:04,340 --> 00:01:08,210 chyfrif i maes ddeinamig pa mor fawr cymeriad unigol. 22 00:01:08,210 --> 00:01:12,550 Unwaith lluosi â'i gilydd, yr wyf yn mynd yn ôl y cyfanswm nifer y bytes sydd ei angen arnaf. 23 00:01:12,550 --> 00:01:14,680 >> Ond beth os malloc yn methu â dychwelyd y cof ei angen arnom? 24 00:01:14,680 --> 00:01:16,730 Byddwn yn gwirio orau ar gyfer hynny fel a ganlyn. 25 00:01:16,730 --> 00:01:23,330 Os t hafal null, yna rwyf i'n mynd yn gyntaf i am ddim, y cof a ddychwelwyd gan get 26 00:01:23,330 --> 00:01:27,120 llinyn, ac wedyn dw i'n mynd i dychwelyd 1, i ddynodi gwall. 27 00:01:27,120 --> 00:01:30,360 >> Ond os yw popeth yn iawn, dwi'n mynd i symud ymlaen i ddefnyddio pedwar dolen ac ailadrodd 28 00:01:30,360 --> 00:01:31,110 fel a ganlyn. 29 00:01:31,110 --> 00:01:36,000 Ar gyfer int fi gael 0, n gyfartal hyd cyfres o s. 30 00:01:36,000 --> 00:01:40,350 Rydw i'n mynd i wneud hyn ar yr amod fel fi yn llai na neu'n hafal i n er mwyn i mi 31 00:01:40,350 --> 00:01:44,460 ailadrodd i fyny trwy'r ac yn cynnwys y cymeriad terfynu null mewn s. 32 00:01:44,460 --> 00:01:47,450 >> Ac ar bob fersiwn, rwy'n mynd i gynyddiad i. 33 00:01:47,450 --> 00:01:52,496 Yn y cyfamser, tu mewn dolen hwn, copi s yn i-fed gymeriad i mewn i t yn i-fed 34 00:01:52,496 --> 00:01:59,310 lleoliad, mae'n suffices i wneud t braced i cael s braced i. 41 00:01:59,320 --> 00:02:02,750 >> Gadewch i ni yn awr yn arbed, crynhoi, a redeg y rhaglen newydd. 42 00:02:02,750 --> 00:02:06,690 Gwneud copi copi 1 dot slaes 1. 43 00:02:06,690 --> 00:02:09,460 A byddaf yn dweud rhywbeth fel helo ym mhob llythrennau bach. 44 00:02:09,460 --> 00:02:12,280 , A diolch byth, y tro hwn mae fy gwreiddiol yn parhau i fod yr un fath. 45 00:02:12,280 --> 00:02:13,660 helo ym mhob llythrennau bach. 46 00:02:13,660 --> 00:02:15,540 Ond mae'r copi, yn wir, eu cyfalafu. 47 00:02:37,120 --> 00:02:38,963