1 00:00:00,000 --> 00:00:10,970 >> [Tónlist spila] 2 00:00:10,970 --> 00:00:12,536 >> DAVID J. Malan: Allt í lagi. 3 00:00:12,536 --> 00:00:13,392 >> [Hlátur] 4 00:00:13,392 --> 00:00:14,240 >> Velkominn aftur. 5 00:00:14,240 --> 00:00:14,990 Þetta er CS50. 6 00:00:14,990 --> 00:00:16,890 Og þetta í lok viku fimm. 7 00:00:16,890 --> 00:00:20,020 Og allt þar til nú, við höfum nánast verið að taka sem sjálfsögðum hlut að það 8 00:00:20,020 --> 00:00:23,480 til þessa þýðanda, Clang, sem þú hefur verið skírskota með því þetta 9 00:00:23,480 --> 00:00:27,100 önnur tól sem heitir Gerðu það einhvern veginn dularfullur breytir kóðann þinn 10 00:00:27,100 --> 00:00:31,350 inn kóðann mótmæla, núll og sjálfur að tölvur CPU, Mið 11 00:00:31,350 --> 00:00:33,410 vinnslu eining, reyndar skilur. 12 00:00:33,410 --> 00:00:36,770 En það kemur í ljós að það er tala sem er fara á undir hetta í 13 00:00:36,770 --> 00:00:38,690 milli inntak og úttak. 14 00:00:38,690 --> 00:00:41,800 >> Og mig langar til að leggja til að við hold sem út í smá nánar í 15 00:00:41,800 --> 00:00:45,130 þessum fjórum skrefum, hafa eitthvað sem heitir Pre-vinnslu, eitthvað 16 00:00:45,130 --> 00:00:48,300 kallað saman, sem við höfum séð, eitthvað sem kallast samsetningu og 17 00:00:48,300 --> 00:00:49,420 eitthvað sem kallast tengja. 18 00:00:49,420 --> 00:00:53,270 Svo allt þar til nú, í sumum okkar forrit, höfum við haft mikil nær. 19 00:00:53,270 --> 00:00:56,650 Meira undanfarið höfum við haft nokkur skörp skilgreinir fyrir fastar. 20 00:00:56,650 --> 00:01:00,660 Svo kemur í ljós að þeir hlutir sem sem forskeyti kjötkássa tákn eða 21 00:01:00,660 --> 00:01:04,150 pund tákn eru fyrirfram örgjörva tilskipunum. 22 00:01:04,150 --> 00:01:07,960 Það er bara fínt leið til að segja það A lína af kóða sem er í raun 23 00:01:07,960 --> 00:01:12,280 breytt í eitthvað annað áður en tölva reyna jafnvel að umbreyta þinn 24 00:01:12,280 --> 00:01:13,800 program í núll og sjálfur. 25 00:01:13,800 --> 00:01:19,000 >> Til dæmis, skarpur nær staðall I / O. Klst nánast þýðir bara að fara 26 00:01:19,000 --> 00:01:24,010 undan, grípa innihald skráa stdio.h og líma þær þarna. 27 00:01:24,010 --> 00:01:25,880 Svo engin núll og sjálfur á þeim tímapunkti enn. 28 00:01:25,880 --> 00:01:27,470 Það er í raun bara skipta. 29 00:01:27,470 --> 00:01:30,790 Og það er gert á svokölluðum fyrirfram vinnslu stigi, þegar þú 30 00:01:30,790 --> 00:01:34,230 reyndar hlaupa Clang eða sérstaklega Gera í flestum tilfellum. 31 00:01:34,230 --> 00:01:36,950 Svo allt þetta hefur verið að gerast Fyrsta sjálfkrafa svona langt. 32 00:01:36,950 --> 00:01:38,800 >> Þá kemur samantekt skref. 33 00:01:38,800 --> 00:01:40,920 En við höfum verið of einfalt samantekt. 34 00:01:40,920 --> 00:01:45,060 Setja saman áætlun í raun þýðir að taka það frá eitthvað eins og C, sem 35 00:01:45,060 --> 00:01:48,430 Kóðinn sem við höfum verið að skrifa, niður til eitthvað sem heitir samkoma. 36 00:01:48,430 --> 00:01:52,900 Þingið tungumál er lægri tungumál sem betur fer, munum við ekki 37 00:01:52,900 --> 00:01:55,480 hafa mikið tækifæri til að skrifa á þessari önn. 38 00:01:55,480 --> 00:01:59,100 En það er á lægsta stigi í skilningi að þú byrjar bókstaflega að skrifa 39 00:01:59,100 --> 00:02:04,270 bæta við og draga og margfalda og hlaða frá minni og vista í minni, 40 00:02:04,270 --> 00:02:08,259 einfaldar leiðbeiningar sem tölvu, undir hetta, 41 00:02:08,259 --> 00:02:09,639 raun skilur. 42 00:02:09,639 --> 00:02:14,930 >> Loksins, samsetningu tekur það tungumál til núll og sjálfur sem við höfum verið 43 00:02:14,930 --> 00:02:16,190 lýsa svona langt. 44 00:02:16,190 --> 00:02:19,270 Og sannarlega loks, það er svokölluð tengja áfanga, sem við munum 45 00:02:19,270 --> 00:02:22,360 sjá í aðeins augnablik, sem sameinar núll þín og sjálfur með núllum og 46 00:02:22,360 --> 00:02:24,870 sjálfur öðru fólki fyrir þú hefur búið til. 47 00:02:24,870 --> 00:02:26,660 >> Svo íhuga þetta frábær einfalt forrit. 48 00:02:26,660 --> 00:02:27,560 Það var frá viku 1.. 49 00:02:27,560 --> 00:02:29,610 Það sagði bara, Halló heimur, á skjánum. 50 00:02:29,610 --> 00:02:30,920 Við hljóp þetta í gegnum Clang. 51 00:02:30,920 --> 00:02:33,200 Eða við hljóp það gera í gegnum sem hljóp Clang. 52 00:02:33,200 --> 00:02:36,170 Og outputted á þeim tíma sem sumir núll og sjálfur. 53 00:02:36,170 --> 00:02:38,100 En það kemur í ljós að það er millistig skref. 54 00:02:38,100 --> 00:02:40,460 Ef ég fer yfir hér - Úps, ekki langar að sjá hann ennþá. 55 00:02:40,460 --> 00:02:44,800 Ef ég fer yfir hér að tæki minn og ég opna hello.c, hér 56 00:02:44,800 --> 00:02:46,160 er sama program. 57 00:02:46,160 --> 00:02:48,600 Og það sem ég ætla að gera í flugstöðinni minn gluggi hér er ég ætla að 58 00:02:48,600 --> 00:02:51,430 hlaupa Clang frekar en að gera, sem sjálfvirkan allar fjórar af 59 00:02:51,430 --> 00:02:52,870 þeir stíga fyrir okkur. 60 00:02:52,870 --> 00:02:58,620 Og ég ætla að gera clang-S og þá hello.c og svo inn. 61 00:02:58,620 --> 00:03:00,590 >> Og ég fá blikkandi hvetja aftur, sem er gott. 62 00:03:00,590 --> 00:03:05,280 Og nú í örlítið stærri glugga, Ég ætla að opna gedit hér. 63 00:03:05,280 --> 00:03:09,610 Og ég ætla að opna skrá sem, reynist, heitir hello.s þetta 64 00:03:09,610 --> 00:03:11,870 inniheldur að samsetningu tungumál Ég nefndi áðan. 65 00:03:11,870 --> 00:03:15,060 Og þetta er það sem er kallað samkoma tungumál, frekar lágt 66 00:03:15,060 --> 00:03:18,470 leiðbeiningar sem þinn Intel CPU eða hvað sem það er sem er inni 67 00:03:18,470 --> 00:03:19,350 skilur. 68 00:03:19,350 --> 00:03:24,480 Og MOV er fyrir ferðinni. símtal er í starf, mjög lágu stigi virka. 69 00:03:24,480 --> 00:03:26,380 undir er fyrir frádrátt. 70 00:03:26,380 --> 00:03:30,370 >> Svo þegar þú ert með ákveðna CPU inni um tölvuna þína, sem gerir það 71 00:03:30,370 --> 00:03:34,300 greinilegur, á móti öðrum örgjörva á að markaði, er hvaða leiðbeiningar það 72 00:03:34,300 --> 00:03:39,460 skilur og oft hversu duglegur hann er, hversu hratt það er framkvæmd sumir 73 00:03:39,460 --> 00:03:40,380 þessara leiðbeininga. 74 00:03:40,380 --> 00:03:45,150 Nú fyrir meira um þetta, þú getur tekið næsta haust CS61 við skólann. 75 00:03:45,150 --> 00:03:48,170 En hér höfum við, til dæmis, nokkrar heiti sem gæti líta kunnuglegt. 76 00:03:48,170 --> 00:03:50,150 hello.c er nafn áætlunarinnar. 77 00:03:50,150 --> 00:03:51,070 >> . Texta - 78 00:03:51,070 --> 00:03:54,190 það er ekki mikið af áhuga þar bara núna, muna að textinn 79 00:03:54,190 --> 00:03:59,190 hluti, og með mánudagur, er þar í minni program endar í raun allt. 80 00:03:59,190 --> 00:04:01,330 Svo er það að minnsta kosti óljóst þekki þar. 81 00:04:01,330 --> 00:04:03,730 Hér, að sjálfsögðu, er minnst helstu starfsemi okkar. 82 00:04:03,730 --> 00:04:07,220 Fletta niður, vísa þeim til hluti kallast skrár, mjög lítil klumpur af 83 00:04:07,220 --> 00:04:09,190 minni inni af raunverulegu CPU þinn. 84 00:04:09,190 --> 00:04:12,930 Og ef ég skruna niður jafnvel frekar sé ég einhvers konar 85 00:04:12,930 --> 00:04:14,240 óbein nefna ASCII. 86 00:04:14,240 --> 00:04:17,120 Og það, örugglega, er það band, halló, komma, heimur. 87 00:04:17,120 --> 00:04:20,079 >> Svo langa sögu stutta, þetta hefur verið gerast fyrir þig sjálfkrafa, 88 00:04:20,079 --> 00:04:22,140 undir hetta öllum þessum tíma. 89 00:04:22,140 --> 00:04:26,450 Og hvað er verið að gerast er í raun einu þú hefur keyrt Clang, eða sem 90 00:04:26,450 --> 00:04:29,150 Gera, þú ert að fá fyrsta, frá the uppspretta merkjamál, the 91 00:04:29,150 --> 00:04:30,700 svokallaða samkoma tungumál. 92 00:04:30,700 --> 00:04:35,210 Þá Clang er að breyta þessu samkoma tungumál niður núll og sjálfur. 93 00:04:35,210 --> 00:04:38,340 Og þetta er glæra sem við byrjuðum umfjöllun okkar í viku 0 á - 94 00:04:38,340 --> 00:04:39,840 og þá Vika 1 á. 95 00:04:39,840 --> 00:04:44,030 Og loks, þá núll og sjálfur eru ásamt núll og sjálfur 96 00:04:44,030 --> 00:04:47,190 frá þeim bókasöfnum sem við höfum verið að taka sjálfsögðum hlut eins og Standard I / O eða 97 00:04:47,190 --> 00:04:50,010 String Library eða jafnvel The CS50 bókasafn. 98 00:04:50,010 --> 00:04:54,200 >> Svo að mála þessa mynd meira sjónrænt, höfum við hello.c. 99 00:04:54,200 --> 00:04:57,220 Og það, að sjálfsögðu, notar printf virka að segja, halló heimur. 100 00:04:57,220 --> 00:05:01,810 Samantekt skref tekur það niður að skrá sáum bara hello.s, jafnvel 101 00:05:01,810 --> 00:05:04,290 þó það er oftast eytt sjálfkrafa fyrir þig. 102 00:05:04,290 --> 00:05:06,050 En það er samkoma númer í miðju skrefi. 103 00:05:06,050 --> 00:05:09,750 Og svo þegar við saman söfnuð tungumál, svo að segja, það er þegar þú 104 00:05:09,750 --> 00:05:10,830 fá þessir núll og sjálfur. 105 00:05:10,830 --> 00:05:13,920 Þannig að við höfum aðdregna í raun í dag á það sem við höfum verið að taka sem sjálfsögðum hlut, 106 00:05:13,920 --> 00:05:16,430 þýðir að fara kóðann að mótmæla kóða. 107 00:05:16,430 --> 00:05:18,850 >> En loksins, nú sama mynd - skulum shove það yfir til 108 00:05:18,850 --> 00:05:20,020 vinstri hönd hlið. 109 00:05:20,020 --> 00:05:22,880 Og athugaðu að í toppnum Ég nefndi stdio.h. 110 00:05:22,880 --> 00:05:25,030 Það er skrá sem við höfum látið í nánast allar 111 00:05:25,030 --> 00:05:26,250 forrit sem við höfum skrifað. 112 00:05:26,250 --> 00:05:28,830 Og það er skrá sem innihald fá afrit límt, 113 00:05:28,830 --> 00:05:30,350 raun topp kóðann þinn. 114 00:05:30,350 --> 00:05:34,170 En það kemur í ljós að á tölvu kerfið einhvers staðar, það er væntanlega 115 00:05:34,170 --> 00:05:39,150 stdio.c skrá sem einhver skrifaði árum síðan útfærir því að allir 116 00:05:39,150 --> 00:05:41,870 aðgerðir sem úrskurðaðir í stdio.h. 117 00:05:41,870 --> 00:05:45,465 >> Nú í raun það er sennilega ekki á Mac eða PC eða jafnvel í 118 00:05:45,465 --> 00:05:47,660 CS50 tæki er hrár C kóða. 119 00:05:47,660 --> 00:05:52,710 Einhver saman þegar það og með . O skrá fyrir kóðann mótmæla eða. A 120 00:05:52,710 --> 00:05:56,020 skrá, sem vísar til a hluti bókasafn sem hefur verið fyrirfram uppsett og 121 00:05:56,020 --> 00:05:57,240 pre-saman fyrir þig. 122 00:05:57,240 --> 00:06:01,950 En geri ráð fyrir að það örugglega til á stdio.c tölvunni okkar í samhliða 123 00:06:01,950 --> 00:06:02,650 með Clang. 124 00:06:02,650 --> 00:06:04,960 Númerið þitt er að safna saman og stefndi. 125 00:06:04,960 --> 00:06:09,200 stdio.c 's númer er unnin og saman, þannig að þetta mjög síðast 126 00:06:09,200 --> 00:06:13,730 stíga, niður hér, verðum við að einhvern veginn hlekkur, svo að segja, núll þín og sjálfur 127 00:06:13,730 --> 00:06:18,430 með hans eða hennar núll og sjálfur inn í einn einföld forrit sem að lokum er 128 00:06:18,430 --> 00:06:20,540 heitir bara Hello. 129 00:06:20,540 --> 00:06:23,340 >> Svo er það allt í galdur sem er verið að gerast svona langt. 130 00:06:23,340 --> 00:06:26,430 Og mun halda áfram að taka þessar ferli sem sjálfsögðum hlut, en ljóst 131 00:06:26,430 --> 00:06:28,750 There 'a einhver fjöldi af safaríkur upplýsingar fara á undir það. 132 00:06:28,750 --> 00:06:31,920 Og þetta er það sem gerir þinn tölva með Intel inni 133 00:06:31,920 --> 00:06:33,940 sérstaklega greinilegur. 134 00:06:33,940 --> 00:06:37,020 >> Svo á að huga, ef þú vildi eins og til tengja okkur í hádeginu á föstudaginn, ekki fara 135 00:06:37,020 --> 00:06:41,570 við venjulega stað cs50.net/rsvp, 13:15 á föstudaginn. 136 00:06:41,570 --> 00:06:43,400 Og nú fyrir nokkrum tilkynningar. 137 00:06:43,400 --> 00:06:44,670 Þannig að við höfum einhverjar góðar fréttir. 138 00:06:44,670 --> 00:06:45,970 Og við höfum slæmar fréttir. 139 00:06:45,970 --> 00:06:47,260 Byrja með einhverjum góðum fréttum hér. 140 00:06:47,260 --> 00:06:52,038 141 00:06:52,038 --> 00:06:54,510 >> [Andvörp] 142 00:06:54,510 --> 00:06:54,710 >> Allt í lagi. 143 00:06:54,710 --> 00:06:56,670 Jæja, það er tæknilega a frí, svo það er ekki svo mikið að gjöf frá okkur. 144 00:06:56,670 --> 00:06:58,030 En þá slæmar fréttir að sjálfsögðu. 145 00:06:58,030 --> 00:07:00,550 146 00:07:00,550 --> 00:07:01,880 >> [Andvörp] 147 00:07:01,880 --> 00:07:03,530 >> Ég eyddi miklum tíma á þessum fjör. 148 00:07:03,530 --> 00:07:04,690 >> [Hlátur] 149 00:07:04,690 --> 00:07:07,000 >> Það verður að endurskoða setu þetta kemur mánudagur. 150 00:07:07,000 --> 00:07:08,340 Það er að fara að vera á 5:30 PM. 151 00:07:08,340 --> 00:07:11,210 Við munum minna þig á allar þessar upplýsingar með tölvupósti á námskeiðinu er 152 00:07:11,210 --> 00:07:13,470 website í aðeins nokkra daga tíma. 153 00:07:13,470 --> 00:07:16,610 Það verður tekið og gerðar aðgengilegar skömmu síðar. 154 00:07:16,610 --> 00:07:19,200 Svo ef þú getur ekki gert það mánudagur nótt rifa, ekki hafa áhyggjur. 155 00:07:19,200 --> 00:07:22,270 Dæmatímar þessa komandi viku mun einnig áherslu á endurskoðun fyrir próf. 156 00:07:22,270 --> 00:07:25,670 Ef hluti er á mánudaginn, sem er örugglega háskóla frí, munum við 157 00:07:25,670 --> 00:07:26,920 enn mæta í kafla. 158 00:07:26,920 --> 00:07:28,890 Ef þú einfaldlega getur ekki gert það kafla vegna þess að þú ert að fara 159 00:07:28,890 --> 00:07:29,860 burt, það er fínt. 160 00:07:29,860 --> 00:07:33,710 Sækja sunnudagur eða þriðjudagur kafla eða lag í lið Jason er, sem er 161 00:07:33,710 --> 00:07:35,110 í boði á netinu. 162 00:07:35,110 --> 00:07:37,490 >> Svo, fleiri slæmar fréttir. 163 00:07:37,490 --> 00:07:41,960 Svo samkvæmt kennsluáætlun, við höfum fyrirlestur næsta föstudag. 164 00:07:41,960 --> 00:07:43,690 En góðar fréttir - 165 00:07:43,690 --> 00:07:44,860 greinilega, eyddi ég of miklum tíma í þetta. 166 00:07:44,860 --> 00:07:45,280 >> [Hlátur] 167 00:07:45,280 --> 00:07:47,140 >> Við munum hætta næstu fyrirlestra föstudag. 168 00:07:47,140 --> 00:07:50,590 Svo sem verður gjöf fyrir okkur, svo þú getur raunverulega hafa a ágætur frest í 169 00:07:50,590 --> 00:07:52,990 milli þessa viku og tveimur vikum liðnum. 170 00:07:52,990 --> 00:07:57,460 Svo enginn fyrirlestra í næstu viku, bara örlítið lítið quiz, sem þú ættir að vera 171 00:07:57,460 --> 00:07:59,030 fá sífellt spenntur. 172 00:07:59,030 --> 00:08:03,870 >> Svo skulum nú snúa athygli okkar að eitthvað sem er örugglega meira sjón 173 00:08:03,870 --> 00:08:06,990 og meira spennandi og til að setja á svið fyrir hvað er að fara að vera á sjóndeildarhringnum 174 00:08:06,990 --> 00:08:08,420 í aðeins nokkra vikna tíma. 175 00:08:08,420 --> 00:08:12,160 Eftir fyrsta prófið, munum við snúa áherslu setur vandamál okkar til annars 176 00:08:12,160 --> 00:08:16,710 ríki ákveðin vandamál, sem af réttar eða öryggi almennt. 177 00:08:16,710 --> 00:08:19,550 >> Í staðreynd, the hefð með þetta vandamál sett er fyrir mig eitt af 178 00:08:19,550 --> 00:08:24,850 kennslu náungi eða CAS að ganga yfir háskólasvæðinu taka nokkrar ljósmyndir af 179 00:08:24,850 --> 00:08:29,450 að bera kennsl á en ekki augljós fólk, stöðum, eða hluti, þá á hverju ári I 180 00:08:29,450 --> 00:08:34,520 einhvern veginn tekst að tilviljun eyða eða skemmt stafrænn frá miðöldum nafnspjald 181 00:08:34,520 --> 00:08:35,720 sem er inni í myndavélinni okkar. 182 00:08:35,720 --> 00:08:36,860 En ekki máli. 183 00:08:36,860 --> 00:08:39,200 Ég get farið á undan og stinga að í tölvunni minni. 184 00:08:39,200 --> 00:08:43,010 Ég get gert réttar mynd af henni, svo að tala, með því að afrita núll og 185 00:08:43,010 --> 00:08:46,830 sjálfur burt af þeim minniskort, hvort Þess SD kort eða samningur glampi nafnspjald eða 186 00:08:46,830 --> 00:08:48,100 hvað sem þú ert kunnug. 187 00:08:48,100 --> 00:08:49,300 Og þá getum við afhenda það út. 188 00:08:49,300 --> 00:08:53,190 >> Og svo áskorun framundan, ma hlutir fyrir þig, verður að skrifa 189 00:08:53,190 --> 00:08:58,630 C kóða sem batna a heild búnt af JPEG fyrir mig og ljós verður 190 00:08:58,630 --> 00:09:00,190 þessir menn, staðir eða hlutir. 191 00:09:00,190 --> 00:09:03,340 Og við munum einnig tala, í þessu vandamáli setja og á næstu dögum koma, um 192 00:09:03,340 --> 00:09:04,440 grafík almennt. 193 00:09:04,440 --> 00:09:06,140 Við höfum notað þá, námskeið, fyrir að brjótast út. 194 00:09:06,140 --> 00:09:09,080 En þú hefur svona tekið sem sjálfsögðum hlut þar til þessir háu hugmyndir stigi 195 00:09:09,080 --> 00:09:10,680 af ferhyrninga og ovals. 196 00:09:10,680 --> 00:09:12,450 En undir hetta það eru punktar. 197 00:09:12,450 --> 00:09:14,370 Og þú hefur fengið að byrja hugsa um þá. 198 00:09:14,370 --> 00:09:18,800 Eða þú munt fyrir p-sett 4 að hugsa um bilið milli múrsteinn þinn, hvernig 199 00:09:18,800 --> 00:09:21,990 fljótt þú ert boltinn hreyfist yfir skjánum fyrir brjótast út. 200 00:09:21,990 --> 00:09:24,830 Svo er þetta hugmynd af punktar á skjánum sem er 201 00:09:24,830 --> 00:09:26,290 koma inn í leik þegar. 202 00:09:26,290 --> 00:09:29,430 >> Nú það sem þú sérð, þó, er það sem þú færð á tölvuskjá. 203 00:09:29,430 --> 00:09:33,680 Ef þú hefur einhvern tíma horft sumir góður eða slæmur TV, eru líkurnar að þeir nánast 204 00:09:33,680 --> 00:09:36,280 meðhöndla áhorfendur eins technophobes sem gera í raun ekki 205 00:09:36,280 --> 00:09:37,630 vita mikið um tölvumál. 206 00:09:37,630 --> 00:09:40,840 Og svo er það mjög auðvelt fyrir lögreglu leynilögreglumaður að segja, getur þú 207 00:09:40,840 --> 00:09:41,710 hreinsa það upp fyrir mig? 208 00:09:41,710 --> 00:09:42,710 Eða auka, ekki satt? 209 00:09:42,710 --> 00:09:45,550 Auka er eins suð orð í flest allir glæpir sem tengjast sýning. 210 00:09:45,550 --> 00:09:49,240 Og raunin er ef þú tekur mjög þoka mynd af grunar að gera 211 00:09:49,240 --> 00:09:51,620 eitthvað slæmt, getur þú ekki bara auka það. 212 00:09:51,620 --> 00:09:53,080 Þú getur ekki stækkað óendanlega. 213 00:09:53,080 --> 00:09:56,350 Þú getur ekki séð í Glint af er einhver auga sem framin að 214 00:09:56,350 --> 00:09:59,860 einkum glæpastarfsemi, þrátt fyrir Algengi þetta á TV. 215 00:09:59,860 --> 00:10:04,110 >> Og svo með að við skulum hvetja sem komandi Heimadæmi með svipinn á 216 00:10:04,110 --> 00:10:05,765 sumir sýnir með hvaða þú gæti verið kunnuglegt. 217 00:10:05,765 --> 00:10:06,500 >> [Vídeó spilun] 218 00:10:06,500 --> 00:10:07,835 >> -OK. 219 00:10:07,835 --> 00:10:09,956 Nú, við skulum fá góða líta á þig. 220 00:10:09,956 --> 00:10:17,060 221 00:10:17,060 --> 00:10:17,766 >> -Bíddu. 222 00:10:17,766 --> 00:10:18,658 Hlaupa að baka. 223 00:10:18,658 --> 00:10:19,550 >> -Bíddu. 224 00:10:19,550 --> 00:10:21,580 Fara til hægri. 225 00:10:21,580 --> 00:10:21,800 >> -Það. 226 00:10:21,800 --> 00:10:22,690 Frysta það. 227 00:10:22,690 --> 00:10:23,692 >> -Full skjár. 228 00:10:23,692 --> 00:10:23,846 >> -OK. 229 00:10:23,846 --> 00:10:24,154 Frysta það. 230 00:10:24,154 --> 00:10:25,140 >> Herða upp á það, mun ya? 231 00:10:25,140 --> 00:10:27,090 >> -Vektor í á þessi strákur með bak hjólinu. 232 00:10:27,090 --> 00:10:29,730 >> -Zoom í hérna á þessum stað. 233 00:10:29,730 --> 00:10:33,700 >> -Með réttum búnaði og imaged hægt að stækka og skerpti. 234 00:10:33,700 --> 00:10:34,490 >> -Hvað er það? 235 00:10:34,490 --> 00:10:35,870 >> -Það er aukahlutur program. 236 00:10:35,870 --> 00:10:36,793 >> -Getur þú skýrt það upp allir? 237 00:10:36,793 --> 00:10:38,560 >> -Ég veit það ekki. 238 00:10:38,560 --> 00:10:39,090 Skulum auka það. 239 00:10:39,090 --> 00:10:41,690 >> -Auka kafla A-6. 240 00:10:41,690 --> 00:10:43,510 >> -Ég aukið smáatriði og - 241 00:10:43,510 --> 00:10:44,456 >> -Ég held að það er nóg til að auka. 242 00:10:44,456 --> 00:10:45,402 Losa það til minn skjár. 243 00:10:45,402 --> 00:10:47,300 >> -Auka spegilmynd í augum hennar. 244 00:10:47,300 --> 00:10:49,330 >> -Við skulum hlaupa þetta í gegnum vídeó aukahluti. 245 00:10:49,330 --> 00:10:50,340 >> -Edgar, getur þú aukið þetta? 246 00:10:50,340 --> 00:10:52,320 >> -Bíddu. 247 00:10:52,320 --> 00:10:54,290 >> -Ég hef verið að vinna þennan íhugunar. 248 00:10:54,290 --> 00:10:55,560 >> -Einhver spegilmynd. 249 00:10:55,560 --> 00:10:56,440 >> -Hugleiðingar. 250 00:10:56,440 --> 00:10:57,940 >> -Það er spegilmynd af andliti mannsins. 251 00:10:57,940 --> 00:10:58,860 >> -The spegilmynd. 252 00:10:58,860 --> 00:10:59,710 >> -Það er spegilmynd. 253 00:10:59,710 --> 00:11:00,900 >> -Zoom í á spegil. 254 00:11:00,900 --> 00:11:03,500 >> -Þú getur séð spegilmynd. 255 00:11:03,500 --> 00:11:04,700 >> -Getur þú bæta ímynd hér? 256 00:11:04,700 --> 00:11:05,700 >> -Getur þú auka hann hérna? 257 00:11:05,700 --> 00:11:06,500 >> -Getur þú auka það? 258 00:11:06,500 --> 00:11:07,380 >> -Getur þú auka það? 259 00:11:07,380 --> 00:11:08,190 >> -Getum við auka þetta? 260 00:11:08,190 --> 00:11:08,940 >> -Getur þú auka það? 261 00:11:08,940 --> 00:11:10,280 >> -Bíddu annað, ég auka. 262 00:11:10,280 --> 00:11:11,570 >> -Zoom í á dyrnar. 263 00:11:11,570 --> 00:11:12,180 >> -X10. 264 00:11:12,180 --> 00:11:13,052 >> -Zoom. 265 00:11:13,052 --> 00:11:13,197 >> [Hlátur] 266 00:11:13,197 --> 00:11:14,360 >> -Færa inn 267 00:11:14,360 --> 00:11:15,100 >> -Bíddu, stöðva. 268 00:11:15,100 --> 00:11:15,740 >> -Stöðva. 269 00:11:15,740 --> 00:11:16,290 >> -Hlé á henni. 270 00:11:16,290 --> 00:11:19,390 >> -Snúa 75 gráður í kringum lóðrétt vinsamlegast. 271 00:11:19,390 --> 00:11:19,886 >> [Hlátur] 272 00:11:19,886 --> 00:11:24,350 >> -Hættu, og aftur til hluta um dyrnar aftur. 273 00:11:24,350 --> 00:11:26,330 >> -Fékk Myndvinnsla sem getur punktamynd? 274 00:11:26,330 --> 00:11:28,990 >> -Kannski getum við notað Pradeep Sen aðferð til að sjá inn í Windows. 275 00:11:28,990 --> 00:11:30,680 >> -Þessi hugbúnaður er ástand af the list. 276 00:11:30,680 --> 00:11:31,676 >> -Táknið gildi er slökkt. 277 00:11:31,676 --> 00:11:34,166 >> -Með réttum samsetningu af reiknirit. 278 00:11:34,166 --> 00:11:38,399 >> -Hann er tekið lýsingu reiknirit til á næsta stig og ég er að nota þær til að 279 00:11:38,399 --> 00:11:38,648 auka þessa mynd. 280 00:11:38,648 --> 00:11:42,050 >> -Læsa á og stækka Z-axis. 281 00:11:42,050 --> 00:11:42,760 >> -Auka. 282 00:11:42,760 --> 00:11:43,060 >> -Auka. 283 00:11:43,060 --> 00:11:43,760 >> -Auka. 284 00:11:43,760 --> 00:11:45,010 >> -Frysta og auka. 285 00:11:45,010 --> 00:11:47,470 286 00:11:47,470 --> 00:11:47,910 >> [END vídeó spilun] 287 00:11:47,910 --> 00:11:51,470 >> DAVID J. Malan: Svo Heimadæmi 5 er það sem liggur framundan þar. 288 00:11:51,470 --> 00:11:55,260 Þannig að við munum fljótlega fá betri skilning um hvenær og hvers vegna þú getur 289 00:11:55,260 --> 00:11:57,300 og okkar getur ekki auka á þann hátt. 290 00:11:57,300 --> 00:12:00,090 En fyrst skulum fara aftur athygli okkar að sumir af the byggja blokkir við munum 291 00:12:00,090 --> 00:12:02,250 þarf að vera fær um að segja þessa sögu. 292 00:12:02,250 --> 00:12:05,580 >> Svo muna að við teiknaði þessa mynd á Mánudagur og svolítið í síðustu viku. 293 00:12:05,580 --> 00:12:09,970 Og þetta lýsir skipulag hlutum í minni tölvunnar þegar 294 00:12:09,970 --> 00:12:11,000 keyra eitthvað forrit. 295 00:12:11,000 --> 00:12:14,310 The tækni hluti upp ofan, muna, vísar við raunverulegan núll og sjálfur 296 00:12:14,310 --> 00:12:16,000 að semja program. 297 00:12:16,000 --> 00:12:19,340 Það er, fyrir neðan það, sumir frumstilla eða forsniðinn gögn, sem venjulega 298 00:12:19,340 --> 00:12:22,910 vísar til hlutur eins fastar eða strengir eða alþjóðlegum breytur sem hafa 299 00:12:22,910 --> 00:12:24,200 verið lýst fyrirfram. 300 00:12:24,200 --> 00:12:26,500 Það er hrúga, en við munum koma aftur til að í a hluti. 301 00:12:26,500 --> 00:12:27,410 >> Og þá er það stafla. 302 00:12:27,410 --> 00:12:30,660 Mikið eins og stafla af bakka í mötuneyti, þetta er þar sem minni fær 303 00:12:30,660 --> 00:12:33,610 lagskipt og lagskipt þegar þú hvað í áætluninni? 304 00:12:33,610 --> 00:12:36,380 305 00:12:36,380 --> 00:12:37,730 Hvað er að stafla nota fyrir? 306 00:12:37,730 --> 00:12:39,320 >> Já? 307 00:12:39,320 --> 00:12:40,000 >> Kalla af virka. 308 00:12:40,000 --> 00:12:42,890 Hvert sinn sem þú hringja í aðgerð, það er gefið flís af minni fyrir þess 309 00:12:42,890 --> 00:12:45,020 staðbundnar breytur eða breytur hennar. 310 00:12:45,020 --> 00:12:48,810 Og pictorially, sjáum við að við hverja röð fall sem kallast, þegar A 311 00:12:48,810 --> 00:12:52,520 símtöl B símtöl C símtöl D, þeir fá lagskipt á stafla. 312 00:12:52,520 --> 00:12:55,630 Og innan hvers þeirra sneiðar af minni er í raun einstakt svigrúm 313 00:12:55,630 --> 00:12:58,590 fyrir að virka, sem, að sjálfsögðu, er erfið ef þú vilt að skila 314 00:12:58,590 --> 00:13:01,850 frá einum til í starfi A stykki af gögnum sem þú vilt hafa það 315 00:13:01,850 --> 00:13:03,500 að mutate eða breyta. 316 00:13:03,500 --> 00:13:08,060 >> Svo það var lausn okkar að gera A virka fulltrúa með einum stafla 317 00:13:08,060 --> 00:13:11,390 ramma til að breyta minni inni annars stafla ramma? 318 00:13:11,390 --> 00:13:14,590 Hvernig þessir tveir tala við annan? 319 00:13:14,590 --> 00:13:18,510 Svo með því að ábendingum eða heimilisföng, sem, aftur, bara lýsa hvar í 320 00:13:18,510 --> 00:13:22,280 minni, með því að tiltekið bíta númer, einkum 321 00:13:22,280 --> 00:13:23,830 gildi er hægt að finna. 322 00:13:23,830 --> 00:13:26,860 Svo muna síðasta skipti líka við áfram söguna og horfði á 323 00:13:26,860 --> 00:13:28,280 nokkuð þrjótur program. 324 00:13:28,280 --> 00:13:32,900 Og þetta forrit er þrjótur fyrir nokkrum ástæður, en mest áhyggjuefni einn er 325 00:13:32,900 --> 00:13:34,620 því það tekst ekki að athuga hvað? 326 00:13:34,620 --> 00:13:39,111 327 00:13:39,111 --> 00:13:40,450 >> Já, ekki það að athuga inntak. 328 00:13:40,450 --> 00:13:41,870 Því miður? 329 00:13:41,870 --> 00:13:43,880 >> Ef það er meira en 12 stafir. 330 00:13:43,880 --> 00:13:47,260 Svo mjög smartly, þegar starf memcopy, sem, eins og nafnið gefur til kynna, bara 331 00:13:47,260 --> 00:13:50,630 eintök minnið annarri röksemdafærslu sína í fyrsta röksemdafærslu sína. 332 00:13:50,630 --> 00:13:54,730 Þriðja rök, mjög smartly, er til að ganga úr skugga um að þú gerir ekki 333 00:13:54,730 --> 00:13:59,400 afrita fleiri en í þessu tilfelli, lengd af bar, fjölda stafa, 334 00:13:59,400 --> 00:14:03,810 inn í áfangastað, sem er á þessu array C. En vandamálið er að það 335 00:14:03,810 --> 00:14:07,230 ef C sjálft er ekki nógu stór að höndla það? 336 00:14:07,230 --> 00:14:09,900 Þú ert að fara að afrita fjölda bæti sem þú hefur verið gefið. 337 00:14:09,900 --> 00:14:13,040 En hvað þú ert í raun meiri bæti en þú hefur pláss fyrir? 338 00:14:13,040 --> 00:14:16,770 >> Jæja, þetta forrit mjög heimskulega bara blindni ágóði til að taka hvað sem það er 339 00:14:16,770 --> 00:14:20,650 gefið, halló sviga 0 er mikill ef band er stutt 340 00:14:20,650 --> 00:14:22,040 nóg, eins og fimm stafir. 341 00:14:22,040 --> 00:14:26,470 En ef það er í raun 12 stafir eða 1200 stafir, sáum við síðasta skipti 342 00:14:26,470 --> 00:14:29,380 að þú ert bara að fara að alveg skrifa minni sem 343 00:14:29,380 --> 00:14:30,470 ekki tilheyrir þér. 344 00:14:30,470 --> 00:14:34,390 Og versta tilfelli, ef þú skrifa að rauður hluti þar sem við kallað 345 00:14:34,390 --> 00:14:35,380 aftur heimilisfang - 346 00:14:35,380 --> 00:14:38,370 þetta er bara þar sem tölvan sjálfkrafa fyrir þig, á bak við 347 00:14:38,370 --> 00:14:43,130 tjöldin, tucks burtu 32-bita gildi sem minnir það að hvaða netfang það ætti 348 00:14:43,130 --> 00:14:47,080 aftur þegar foo, þetta önnur aðgerð, er gert framkvæmd. 349 00:14:47,080 --> 00:14:49,320 Það er brauð Crumb nokkurs konar sem hann kemur aftur. 350 00:14:49,320 --> 00:14:52,490 Ef þú skrifa það, hugsanlega, ef þú ert slæmur strákur, getur gat 351 00:14:52,490 --> 00:14:54,750 hugsanlega að taka yfir einhver tölva. 352 00:14:54,750 --> 00:14:58,020 Og þú munt örugglega hrun það í flestum tilvikum. 353 00:14:58,020 --> 00:15:01,690 >> Nú er þetta vandamál var aðeins aukið Eins og við byrjuðum að tala um minni 354 00:15:01,690 --> 00:15:03,010 stjórnun almennt. 355 00:15:03,010 --> 00:15:07,150 Og malloc, fyrir úthlutun minni, er virka sem við getum notað til að úthluta 356 00:15:07,150 --> 00:15:11,260 minni þegar við vitum ekki fyrirfram að við gætum þurft nokkrar. 357 00:15:11,260 --> 00:15:13,960 Svo, til dæmis, ef ég fer aftur á tækið hér. 358 00:15:13,960 --> 00:15:21,010 Og ég opna úr síðasta tíma hello2.c, muna þetta forrit hér, sem horfði 359 00:15:21,010 --> 00:15:23,500 smá eitthvað eins og þetta, bara þrjár línur - 360 00:15:23,500 --> 00:15:27,940 fram nafn þitt, þá String nafn, á vinstri jafngildir getstring. 361 00:15:27,940 --> 00:15:29,690 Og þá erum við að prenta það út, notandans nafn. 362 00:15:29,690 --> 00:15:31,170 >> Þannig að þetta var frábær einfalt forrit. 363 00:15:31,170 --> 00:15:34,870 Til að vera skýr, láta mig fara á undan og gera halló-2. 364 00:15:34,870 --> 00:15:36,680 Ég ætla að gera punktur rista halló-2. 365 00:15:36,680 --> 00:15:37,750 Tilgreinið nafn þitt - 366 00:15:37,750 --> 00:15:38,140 David. 367 00:15:38,140 --> 00:15:38,840 Enter. 368 00:15:38,840 --> 00:15:39,540 Halló David. 369 00:15:39,540 --> 00:15:41,060 Það virðist virka OK. 370 00:15:41,060 --> 00:15:43,140 En hvað er raunverulega að gerast undir hetta hér? 371 00:15:43,140 --> 00:15:44,670 Fyrst skulum afhýða aftur nokkrum lögum. 372 00:15:44,670 --> 00:15:48,380 Band er bara samheiti við höfum áttaði fyrir hvað? 373 00:15:48,380 --> 00:15:49,110 Char stjörnu. 374 00:15:49,110 --> 00:15:52,740 Svo skulum gera það svolítið meira Bogagöng en meira tæknilega rétt að þetta 375 00:15:52,740 --> 00:15:55,570 er bleikju stjörnu, sem þýðir að nafn, já, er breyta. 376 00:15:55,570 --> 00:15:59,920 En hvað nafn verslanir er heimilisfang A bleikju, sem finnst svolítið skrítið 377 00:15:59,920 --> 00:16:01,050 því ég er að komast aftur a band. 378 00:16:01,050 --> 00:16:03,580 Ég fæ aftur margar stafir ekki bleikju. 379 00:16:03,580 --> 00:16:07,400 >> En auðvitað þarftu aðeins fyrsta Bleikja er netfang til muna þar sem 380 00:16:07,400 --> 00:16:08,870 allt band er því hvers vegna? 381 00:16:08,870 --> 00:16:12,700 Hvernig reikna þig út þar í lok band er að vita í upphafi? 382 00:16:12,700 --> 00:16:13,630 The sviga núll. 383 00:16:13,630 --> 00:16:17,260 Svo með þessum tveimur vísbendingum sem þú reikna út fyrir upphaf og lok 384 00:16:17,260 --> 00:16:20,280 hvaða band er, svo lengi sem þeir eru rétt mynduð með því null 385 00:16:20,280 --> 00:16:22,110 Terminator, sem sviga núll. 386 00:16:22,110 --> 00:16:24,520 >> En þetta er starf getstring. 387 00:16:24,520 --> 00:16:28,020 Og það kemur í ljós að getstring allan þennan tíma hefur verið eins konar 388 00:16:28,020 --> 00:16:28,820 svindla fyrir okkur. 389 00:16:28,820 --> 00:16:32,460 Það er verið að gera þetta vinnuafl, til að vera viss, fá band frá notanda. 390 00:16:32,460 --> 00:16:34,580 En hvar er að minni verið að koma frá? 391 00:16:34,580 --> 00:16:38,440 Ef við förum aftur til myndina hér og beita skilgreiningu á bara 392 00:16:38,440 --> 00:16:42,610 stund síðan, að stafla er þar minni fer þegar aðgerðir eru kallaðir, 393 00:16:42,610 --> 00:16:45,370 eftir að rökfræði, þegar þú hringir getstring, og þá er ég að slá í 394 00:16:45,370 --> 00:16:50,900 D-A-V-I-D Velja, þar sem er D-A-V-I-D sviga núll geymd, miðað við 395 00:16:50,900 --> 00:16:53,480 saga sem við höfum sagt okkur langt? 396 00:16:53,480 --> 00:16:55,190 >> Það myndi virðast vera í stafla, ekki satt? 397 00:16:55,190 --> 00:16:58,120 Þegar þú hringir fá band sem þú færð litla sneið af minni á mánudaginn. 398 00:16:58,120 --> 00:17:01,630 Svo stendur það til þess að D-A-V-I-D sviga núll er geymt 399 00:17:01,630 --> 00:17:02,770 þar í stafla. 400 00:17:02,770 --> 00:17:07,680 En bíddu í eina mínútu, getstring ávöxtun að strengur, svo að segja, sem þýðir 401 00:17:07,680 --> 00:17:11,700 það er bakki úr mötuneyti er tekin af stafla. 402 00:17:11,700 --> 00:17:14,560 Og við sögðum síðasta skipti sem um leið og skilar, og þú tekur að 403 00:17:14,560 --> 00:17:20,109 bakki, svo að segja, af stafla, hvað getur þú gert ráð um leifar af 404 00:17:20,109 --> 00:17:21,819 að minni? 405 00:17:21,819 --> 00:17:25,160 Ég redrew konar þá sem spurningarmerkjum vegna þess að þeir verða í raun 406 00:17:25,160 --> 00:17:26,250 óþekkt gildi. 407 00:17:26,250 --> 00:17:29,500 Þau er hægt að endurnýta þegar sumir næsta virka er kallað. 408 00:17:29,500 --> 00:17:31,870 >> Með öðrum orðum, ef við gerast til að vera að geyma - 409 00:17:31,870 --> 00:17:34,350 Ég teikna a fljótur mynd hér á mánudaginn. 410 00:17:34,350 --> 00:17:38,690 Ef við skyldir að teikna neðst af hluti minni mínu, og við munum segja 411 00:17:38,690 --> 00:17:42,230 að þetta er staðurinn af minni hertekið af helstu og kannski Arg c og 412 00:17:42,230 --> 00:17:46,790 arg V og allt annað í áætluninni, þegar getstring er kallað, 413 00:17:46,790 --> 00:17:51,120 væntanlega fær getstring bútur af minni hér. 414 00:17:51,120 --> 00:17:53,940 Og síðan D-A-V-I-D á einhvern hátt endar í þessa aðgerð. 415 00:17:53,940 --> 00:17:55,320 Og ég ætla að einfalda málin. 416 00:17:55,320 --> 00:18:00,050 En við skulum gera ráð fyrir að þess D-A-V-I-D sviga núll. 417 00:18:00,050 --> 00:18:03,500 Sem þetta margir bæti eru notuð í ramma fyrir getstring. 418 00:18:03,500 --> 00:18:08,270 >> En um leið og getstring skilar, við sagði síðast að þetta minni á 419 00:18:08,270 --> 00:18:11,340 hér verður allt - woops - 420 00:18:11,340 --> 00:18:14,270 allt verður í raun þurrkast út. 421 00:18:14,270 --> 00:18:17,220 Og við getum hugsað þetta núna sem um ræðir markar því hver veit 422 00:18:17,220 --> 00:18:18,720 hvað er að fara að verða þess minni. 423 00:18:18,720 --> 00:18:22,130 Reyndar kalla ég mjög oft virka önnur en getstring. 424 00:18:22,130 --> 00:18:24,750 Og um leið og ég kalla einhver önnur virka en getstring, kannski ekki í 425 00:18:24,750 --> 00:18:28,860 This sérstakur program við skoðuðum bara á en einhver annar, örugglega einhver annar 426 00:18:28,860 --> 00:18:34,180 virka might endir upp tilvera gefið þetta næsta blettur í stafla. 427 00:18:34,180 --> 00:18:39,410 >> Svo það getur ekki verið að getstring verslanir D-A-V-I-D á mánudaginn vegna þess að ég vildi 428 00:18:39,410 --> 00:18:41,040 strax missa aðgang að henni. 429 00:18:41,040 --> 00:18:43,720 En við vitum að þeir getstring skilar einungis hvað? 430 00:18:43,720 --> 00:18:47,220 Það er ekki aftur til mig sex stafi. 431 00:18:47,220 --> 00:18:51,090 Hvað er það aftur sannarlega gerði við ályktum síðasta skipti? 432 00:18:51,090 --> 00:18:52,480 Veffang fyrstu. 433 00:18:52,480 --> 00:18:56,650 Svo einhvern veginn, þegar þú kallaðir getstring, það er að úthluta klumpur af minni fyrir 434 00:18:56,650 --> 00:18:59,620 strengurinn sem notendur slá og þá aftur heimilisfang það. 435 00:18:59,620 --> 00:19:02,930 Og það kemur í ljós að þegar þú vilt virka til að úthluta minni í þessari 436 00:19:02,930 --> 00:19:08,390 leið og aftur til þess sem kallast að virka, heimilisfang 437 00:19:08,390 --> 00:19:11,870 að bútur af minni, þú algerlega getur ekki setja það í stafla á að 438 00:19:11,870 --> 00:19:14,750 botn, því virkni er það bara fara að gerast ekki þitt mjög 439 00:19:14,750 --> 00:19:17,800 fljótt, svo þú getur sennilega giska á hvar við erum líklega að fara að kasta því 440 00:19:17,800 --> 00:19:20,130 staðinn, svokallaða hrúga. 441 00:19:20,130 --> 00:19:25,290 >> Svo milli botns er minni þitt skipulag og efst er minni þitt 442 00:19:25,290 --> 00:19:26,820 skipulag ert a heild búnt af hluti. 443 00:19:26,820 --> 00:19:29,270 Eitt er að stafla, og hægri ofan er hrúga. 444 00:19:29,270 --> 00:19:33,680 Og hrúga er bara öðruvísi klumpur af minni sem er ekki notað fyrir aðgerðir 445 00:19:33,680 --> 00:19:34,770 þegar þeir eru kallaðir. 446 00:19:34,770 --> 00:19:38,100 Það er notað til lengri tíma litið minni, þegar þú vilt eina aðgerð til að grípa sumir 447 00:19:38,100 --> 00:19:42,700 minni og vera fær um að hanga á henni án þess að missa stjórn á henni. 448 00:19:42,700 --> 00:19:45,550 >> Nú þú gætir kannski strax sjá að þetta er ekki 449 00:19:45,550 --> 00:19:48,060 endilega fullkomna hönnun. 450 00:19:48,060 --> 00:19:51,350 Sem forritið þitt úthlutað minni á stafla, eða eins og þú kalla meira og 451 00:19:51,350 --> 00:19:55,540 fleiri aðgerðir, eða eins og þú úthluta minni á hrúga með malloc burt eins 452 00:19:55,540 --> 00:20:00,690 getstring er að gera, hvað greinilega virðist vera óhjákvæmilegt vandamál? 453 00:20:00,690 --> 00:20:00,860 >> Rétt. 454 00:20:00,860 --> 00:20:03,150 Eins og sú staðreynd að þessar örvar vísi hvort á annað 455 00:20:03,150 --> 00:20:04,380 ekki Bode vel. 456 00:20:04,380 --> 00:20:08,630 Og reyndar, við gætum mjög fljótt hrun forrit í allir tala af lifnaðarhættir. 457 00:20:08,630 --> 00:20:12,050 Í raun held ég að við gætum hafa gert þetta óvart einu sinni. 458 00:20:12,050 --> 00:20:14,020 Eða ef ekki, við skulum gera það vísvitandi núna. 459 00:20:14,020 --> 00:20:21,330 Leyfðu mér að fara á undan og skrifa frábær fljótt forrit sem heitir dontdothis.c. 460 00:20:21,330 --> 00:20:26,730 Og nú fer ég í hér og gera skörp eru stdio.h. 461 00:20:26,730 --> 00:20:32,620 Skulum lýsa virka foo tekur engin rök, sem er 462 00:20:32,620 --> 00:20:34,040 táknað sem vel tómi. 463 00:20:34,040 --> 00:20:37,830 >> Og það eina sem foo er að fara að gera er að kalla foo, sem sennilega er ekki 464 00:20:37,830 --> 00:20:39,100 smartest hugmynd, en svo vera það. 465 00:20:39,100 --> 00:20:40,490 Ent helstu ógilt. 466 00:20:40,490 --> 00:20:45,270 Nú það eina sem helstu er að fara til að gera er að hringja foo eins vel. 467 00:20:45,270 --> 00:20:51,050 Og bara fyrir ánægja, ég ætla að fara undan hér og segja printf "Halló frá 468 00:20:51,050 --> 00:20:52,340 foo. " 469 00:20:52,340 --> 00:20:52,890 >> OK. 470 00:20:52,890 --> 00:21:00,160 Þannig að ef ég var ekki að gera einhver mistök, Gerðu dontdothis punktur rista. 471 00:21:00,160 --> 00:21:01,960 Og við skulum gera það í stærri glugga - 472 00:21:01,960 --> 00:21:03,210 punktur rista, dontdothis. 473 00:21:03,210 --> 00:21:07,590 474 00:21:07,590 --> 00:21:08,840 Koma á. 475 00:21:08,840 --> 00:21:10,940 476 00:21:10,940 --> 00:21:11,890 Uh oh. 477 00:21:11,890 --> 00:21:13,100 Apparently, þú getur gert þetta. 478 00:21:13,100 --> 00:21:15,190 Fjandinn. 479 00:21:15,190 --> 00:21:16,190 OK. 480 00:21:16,190 --> 00:21:16,580 Bíddu. 481 00:21:16,580 --> 00:21:17,370 Standa við. 482 00:21:17,370 --> 00:21:18,270 Gerði við - 483 00:21:18,270 --> 00:21:20,110 Við vildum nota það með gera. 484 00:21:20,110 --> 00:21:22,050 >> [Sighs] 485 00:21:22,050 --> 00:21:25,110 >> Ég veit, en ég held að við bara eytt því. 486 00:21:25,110 --> 00:21:28,410 Uh, já. 487 00:21:28,410 --> 00:21:30,660 Fjandinn. 488 00:21:30,660 --> 00:21:32,640 Leysa þetta Rob. 489 00:21:32,640 --> 00:21:34,678 Hvað? 490 00:21:34,678 --> 00:21:35,928 Það er mjög einfalt. 491 00:21:35,928 --> 00:21:43,820 492 00:21:43,820 --> 00:21:47,360 Já, sneri við hagræðingu af. 493 00:21:47,360 --> 00:21:48,970 OK, standa bless. 494 00:21:48,970 --> 00:21:49,950 Nú líður mér betur. 495 00:21:49,950 --> 00:21:51,390 OK. 496 00:21:51,390 --> 00:21:51,780 Allt í lagi. 497 00:21:51,780 --> 00:21:53,430 >> Svo skulum laun þetta - 498 00:21:53,430 --> 00:21:55,880 Gerðu þig dontdothis. 499 00:21:55,880 --> 00:22:00,090 Þú gætir þurft að endurnefna þetta dothis.c í aðeins augnablik. 500 00:22:00,090 --> 00:22:00,710 Þar við förum. 501 00:22:00,710 --> 00:22:01,240 Þakka þér. 502 00:22:01,240 --> 00:22:02,050 OK. 503 00:22:02,050 --> 00:22:05,480 Svo sú staðreynd að ég var prentun eitthvað út var í raun bara 504 00:22:05,480 --> 00:22:08,150 hægja á ferli sem við hefði náð að benda. 505 00:22:08,150 --> 00:22:08,510 OK. 506 00:22:08,510 --> 00:22:08,870 Phew! 507 00:22:08,870 --> 00:22:11,180 >> Svo hvað er raunverulega að gerast? 508 00:22:11,180 --> 00:22:14,440 Ástæðan, eins og innskot, er gera neitt í skilmálar af inntak og 509 00:22:14,440 --> 00:22:17,270 framleiðsla hefur tilhneigingu til að vera hægari vegna þess að þú að skrifa stafi til 510 00:22:17,270 --> 00:22:18,600 skjár, hefur það að fletta. 511 00:22:18,600 --> 00:22:21,720 Svo löng saga stutt, ég hafði í raun gerðist svo óþolinmóð, myndum við hafa 512 00:22:21,720 --> 00:22:23,260 séð þetta niðurstaðan eins vel. 513 00:22:23,260 --> 00:22:26,220 Nú þegar ég fékk far á print-ups, við sjáum það strax. 514 00:22:26,220 --> 00:22:28,410 Svo hvers vegna er þetta að gerast. 515 00:22:28,410 --> 00:22:31,300 Well, the einföld skýring, að sjálfsögðu, er að foo sennilega ætti ekki 516 00:22:31,300 --> 00:22:32,500 að kalla sig. 517 00:22:32,500 --> 00:22:34,470 >> Nú í almennum skilmálum, þetta er endurkvæmni. 518 00:22:34,470 --> 00:22:36,970 Og við héldum nokkrar vikur síðan endurkvæma er gott. 519 00:22:36,970 --> 00:22:40,330 Endurkvæmni er þetta töfrandi leið tjá þig frábær succinctly. 520 00:22:40,330 --> 00:22:41,400 Og það virkar bara. 521 00:22:41,400 --> 00:22:45,060 En það er lykill lögun af öllum endurkvæma forrit sem við höfum talað 522 00:22:45,060 --> 00:22:48,260 um og horfði á svona langt, sem var að þeir höfðu hvað? 523 00:22:48,260 --> 00:22:52,610 Grunn málið, sem var einhver harður dulmáli mál sem sagt í sumum tilvikum 524 00:22:52,610 --> 00:22:56,210 kalla ekki foo, sem er greinilega ekki raunin hér. 525 00:22:56,210 --> 00:22:58,920 >> Svo hvað er raunverulega að gerast hvað varðar þessa mynd? 526 00:22:58,920 --> 00:23:01,790 Jæja, þegar helstu kallar foo, það fær sneið af minni. 527 00:23:01,790 --> 00:23:04,150 Þegar foo kallar foo, fær það sneið af minni. 528 00:23:04,150 --> 00:23:06,430 Þegar foo kallar foo, fær það sneið. 529 00:23:06,430 --> 00:23:07,080 Það fær sneið. 530 00:23:07,080 --> 00:23:08,120 Það fær sneið. 531 00:23:08,120 --> 00:23:09,460 Vegna foo er aldrei aftur. 532 00:23:09,460 --> 00:23:12,160 Við erum aldrei að hreinsa eina af þeim rammar úr stafla. 533 00:23:12,160 --> 00:23:15,930 Þannig að við erum að blása í gegnum hrúga, ekki að nefna hver veit hvað annað, og 534 00:23:15,930 --> 00:23:19,600 við erum overstepping mörk okkar svokallaða hluti af minni. 535 00:23:19,600 --> 00:23:21,790 Villa fara skiptingu rangar. 536 00:23:21,790 --> 00:23:24,110 >> Svo lausnin er greinilega ekki gera þetta. 537 00:23:24,110 --> 00:23:28,830 En stærri vísbendingu er að, já, það algerlega er einhver takmörk, 538 00:23:28,830 --> 00:23:32,470 jafnvel ef það er ekki vel skilgreind, eins og til hvernig margar aðgerðir sem þú getur hringt í 539 00:23:32,470 --> 00:23:34,970 program, hvernig margir sinnum fall getur hringt sig. 540 00:23:34,970 --> 00:23:38,430 Svo jafnvel þótt við gerðum prédika endurkvæmni eins og þetta hugsanlega töfrandi hlutur 541 00:23:38,430 --> 00:23:41,870 Tveimur vikum fyrir Sigma virka, og þegar við að fá gögnin 542 00:23:41,870 --> 00:23:45,270 mannvirki og CS50, munt þú sjá aðra umsóknir um það, það er ekki 543 00:23:45,270 --> 00:23:46,500 endilega það besta. 544 00:23:46,500 --> 00:23:50,070 Vegna þess að ef fall kallar sig, kallar sig, jafnvel ef það er stöð 545 00:23:50,070 --> 00:23:54,860 tilfelli, ef þú ert ekki högg sem byggja mál fyrir 1.000 símtöl eða 10.000 símtöl, með 546 00:23:54,860 --> 00:23:58,800 þeim tíma sem þú gætir hafa keyrt út úr herberginu á svokölluðu stakkur og högg 547 00:23:58,800 --> 00:24:00,400 nokkrar aðrar hluti af minni. 548 00:24:00,400 --> 00:24:03,950 Svo er það líka hönnun málamiðlun milli glæsileika og milli 549 00:24:03,950 --> 00:24:06,920 robustness einkum þín framkvæmd. 550 00:24:06,920 --> 00:24:10,780 >> Svo er það annar hæðir eða annar Gotcha að það sem við höfum 551 00:24:10,780 --> 00:24:11,720 verið að gera svona langt. 552 00:24:11,720 --> 00:24:12,980 Þegar ég kallaði getstring - 553 00:24:12,980 --> 00:24:15,120 láta mig fara aftur í hello-2. 554 00:24:15,120 --> 00:24:18,170 Takið eftir að ég er að hringja getstring, sem er aftur netfang. 555 00:24:18,170 --> 00:24:20,730 Og við kröfu dag að tölu er frá hrúga. 556 00:24:20,730 --> 00:24:24,480 Og nú er ég að prenta út band á þetta netfang. 557 00:24:24,480 --> 00:24:27,000 En við höfum aldrei kallað andstæða getstring. 558 00:24:27,000 --> 00:24:30,850 Við höfum aldrei þurft að calll aðgerð eins ungetstring, þar sem þú hönd baka 559 00:24:30,850 --> 00:24:31,610 að minni. 560 00:24:31,610 --> 00:24:33,250 En hreinskilnislega við líklega ætti að hafa verið. 561 00:24:33,250 --> 00:24:37,390 Vegna þess að ef við höldum að spyrja tölvuna fyrir minni, við vegur af einhverjum eins 562 00:24:37,390 --> 00:24:40,830 getstring en aldrei gefa það til baka, örugglega sem líka er skylt að leiða til 563 00:24:40,830 --> 00:24:42,970 vandamál þar sem við keyra út af minni. 564 00:24:42,970 --> 00:24:46,140 >> Og í raun getum við leita að þessum vandamál með nýja tól sem notkun 565 00:24:46,140 --> 00:24:47,640 er svolítið dulinn að slá. 566 00:24:47,640 --> 00:24:50,960 En láta mig fara á undan og skvetta upp á skjánum í aðeins augnablik. 567 00:24:50,960 --> 00:24:56,940 Ég ætla að fara á undan og keyra Valgrind með breytu sem fyrsta stjórn 568 00:24:56,940 --> 00:25:00,260 lína rifrildi er nafn af því að forritið halló-2. 569 00:25:00,260 --> 00:25:02,650 Og því miður er það framleiðsla er atrociously 570 00:25:02,650 --> 00:25:04,290 flókið fyrir neitun góður ástæða. 571 00:25:04,290 --> 00:25:06,280 Þannig sjáum við allt sem óreiðu. 572 00:25:06,280 --> 00:25:07,530 David er fram nafn mitt. 573 00:25:07,530 --> 00:25:09,760 Svo er að áætlunin raunverulega í gangi. 574 00:25:09,760 --> 00:25:11,180 Og nú erum við að fá þessa útkomu. 575 00:25:11,180 --> 00:25:13,400 >> Svo er Valgrind svipuð í anda að gdb. 576 00:25:13,400 --> 00:25:14,950 Það er ekki aflúsara í sjálfu sér. 577 00:25:14,950 --> 00:25:16,270 En það er minni afgreiðslumaður. 578 00:25:16,270 --> 00:25:20,140 Það er forrit sem mun keyra þinni forrita og segja þér ef þú spurði 579 00:25:20,140 --> 00:25:23,860 tölva fyrir minni og aldrei afhent henni aftur, þar sem þýðir að þú hefur 580 00:25:23,860 --> 00:25:24,570 minni leka. 581 00:25:24,570 --> 00:25:26,240 Og minni lekur tilhneigingu til að vera slæmt. 582 00:25:26,240 --> 00:25:29,120 Og þú er notandi tölvur hafa sennilega fannst þetta, hvort sem þú ert með 583 00:25:29,120 --> 00:25:30,300 Mac eða PC. 584 00:25:30,300 --> 00:25:33,730 Hefur þú einhvern tíma notað tölvuna þína fyrir meðan og ekki rebooted í nokkrum 585 00:25:33,730 --> 00:25:36,820 daga, eða þú hefur bara got a einhver fjöldi af verkefni í gangi, og fjandinn hlutur 586 00:25:36,820 --> 00:25:42,360 hægir að mala stans, eða að minnsta kosti það er frábær pirrandi að nota, vegna þess að 587 00:25:42,360 --> 00:25:44,350 allt fékk bara frábær hægur. 588 00:25:44,350 --> 00:25:46,260 >> Nú að geta verið allir tala af ástæða. 589 00:25:46,260 --> 00:25:49,600 Það gæti verið óendanlega lykkju, padda í númer einhvers, eða, meira einfaldlega, það 590 00:25:49,600 --> 00:25:53,250 gæti þýtt að þú ert að nota meira minni, eða að reyna að, en þinn 591 00:25:53,250 --> 00:25:54,920 tölva hefur reyndar. 592 00:25:54,920 --> 00:25:57,770 Og kannski er það galla í eitthvað forrit að halda að biðja um minni. 593 00:25:57,770 --> 00:26:02,480 Vafra fyrir árin voru alræmd fyrir þetta, að biðja um meira og meira minni 594 00:26:02,480 --> 00:26:03,870 en aldrei fötlun það aftur. 595 00:26:03,870 --> 00:26:07,220 Víst, ef þú hefur aðeins endanlega magn af minni, þú getur ekki beðið 596 00:26:07,220 --> 00:26:09,990 óendanlega oft fyrir sumir af þeim minni. 597 00:26:09,990 --> 00:26:13,070 >> Og svo það sem þú sérð hér, jafnvel þótt aftur er framleiðsla Valgrind er 598 00:26:13,070 --> 00:26:17,490 óþarflega flókið til litið á fyrst, þetta er áhugaverður hluti. 599 00:26:17,490 --> 00:26:18,890 Hrúga - 600 00:26:18,890 --> 00:26:20,060 í notkun á hætta. 601 00:26:20,060 --> 00:26:22,810 Svo er hér hversu mikið minni var í notkun í hrúga á að 602 00:26:22,810 --> 00:26:24,300 tími program minn lauk - 603 00:26:24,300 --> 00:26:27,280 virðast sex bæti í einu blokk. 604 00:26:27,280 --> 00:26:28,710 Þannig að ég ætla að veifa höndum mínum á hvaða blokk er. 605 00:26:28,710 --> 00:26:31,270 Hugsaðu um það er bara klumpur, meira tæknilega orð fyrir klumpur. 606 00:26:31,270 --> 00:26:33,140 En sex bæti - 607 00:26:33,140 --> 00:26:36,870 hvað eru sex bæti sem voru enn í notkun? 608 00:26:36,870 --> 00:26:37,390 >> Einmitt. 609 00:26:37,390 --> 00:26:41,520 D-A-V-I-D sviga núll, fimm stafa nafn auk null Terminator. 610 00:26:41,520 --> 00:26:46,350 Þannig að þetta forrit Valgrind tekið eftir að ég bað um sex bæti, virðist, með 611 00:26:46,350 --> 00:26:48,950 leið getstring, en aldrei gaf þá aftur. 612 00:26:48,950 --> 00:26:52,030 Og í raun er þetta kannski ekki svo augljóst ef áætlun mín er ekki þrjú 613 00:26:52,030 --> 00:26:53,590 línur, en það er 300 línur. 614 00:26:53,590 --> 00:26:56,920 Svo við getum í raun gefa annað skipunina lína rök að Valgrind til 615 00:26:56,920 --> 00:26:58,290 gera það meira fjölorður. 616 00:26:58,290 --> 00:26:59,760 Það er svolítið pirrandi að muna. 617 00:26:59,760 --> 00:27:01,580 En ef ég geri - 618 00:27:01,580 --> 00:27:01,930 við skulum sjá. 619 00:27:01,930 --> 00:27:03,540 Leka - 620 00:27:03,540 --> 00:27:05,030 Var það leka - 621 00:27:05,030 --> 00:27:07,580 jafnvel ég man ekki hvað það er slökkt hendi. 622 00:27:07,580 --> 00:27:08,550 >> - Leka-stöðva jafn fullur. 623 00:27:08,550 --> 00:27:10,180 Já, þakka þér. 624 00:27:10,180 --> 00:27:12,520 - Leka-stöðva jafn fullur. 625 00:27:12,520 --> 00:27:13,800 Enter. 626 00:27:13,800 --> 00:27:14,940 Sama forritið er í gangi. 627 00:27:14,940 --> 00:27:16,180 Slá í Davíð aftur. 628 00:27:16,180 --> 00:27:17,660 Nú sé ég aðeins meiri smáatriðum. 629 00:27:17,660 --> 00:27:20,890 En undir hrúga samantekt, sem er eins fjórar - Ah, 630 00:27:20,890 --> 00:27:22,120 þetta er góður af gaman. 631 00:27:22,120 --> 00:27:25,460 Nú Valgrind er í raun að leita svolítið erfiðara í númerið mitt. 632 00:27:25,460 --> 00:27:29,580 Og það er að segja það, greinilega, malloc á línu - 633 00:27:29,580 --> 00:27:30,580 við súmma út. 634 00:27:30,580 --> 00:27:31,980 Á Line - 635 00:27:31,980 --> 00:27:32,930 við sjáum ekki hvað lína það er. 636 00:27:32,930 --> 00:27:35,110 En malloc er fyrsta sökudólgur. 637 00:27:35,110 --> 00:27:38,630 Það er blogg í malloc. 638 00:27:38,630 --> 00:27:39,810 >> Allt í lagi? 639 00:27:39,810 --> 00:27:40,450 OK, nei. 640 00:27:40,450 --> 00:27:40,940 Ekki satt? 641 00:27:40,940 --> 00:27:42,520 Ég kallaði getstring. 642 00:27:42,520 --> 00:27:44,460 getstring kallar greinilega malloc. 643 00:27:44,460 --> 00:27:47,800 Svo hvaða línu af kóða er virðist að kenna fyrir að hafa 644 00:27:47,800 --> 00:27:49,050 úthlutað þetta minni? 645 00:27:49,050 --> 00:27:51,560 646 00:27:51,560 --> 00:27:55,540 Skulum gera ráð fyrir að hver skrifaði malloc hefur verið í kringum nógu lengi sem það er 647 00:27:55,540 --> 00:27:56,390 ekki galli þeirra. 648 00:27:56,390 --> 00:27:57,520 Svo það er sennilega mitt. 649 00:27:57,520 --> 00:28:02,000 getstring í cs50.c - svo það er skrá einhvers staðar á tölvunni - 650 00:28:02,000 --> 00:28:05,210 í línu 286 virðist vera sökudólgur. 651 00:28:05,210 --> 00:28:08,140 Nú skulum gera ráð fyrir að cs50 hefur verið kring um viðeigandi magn af tími, svo 652 00:28:08,140 --> 00:28:09,720 við erum líka infallible. 653 00:28:09,720 --> 00:28:14,080 Og svo er það sennilega ekki í getstring að villan liggur, heldur á 654 00:28:14,080 --> 00:28:17,810 halló-2.C línu 18. 655 00:28:17,810 --> 00:28:20,670 >> Þannig að við skulum taka a líta á hvað þessi lína 18 var. 656 00:28:20,670 --> 00:28:21,130 Ó. 657 00:28:21,130 --> 00:28:27,130 Einhvern veginn er þetta línan ekki endilega þrjótur, í sjálfu sér, en það er ástæða 658 00:28:27,130 --> 00:28:28,630 bak við þessi minni leka. 659 00:28:28,630 --> 00:28:32,140 Svo frábær einfaldlega, hvað myndi innsær vera lausnin hér? 660 00:28:32,140 --> 00:28:34,710 Ef við erum að biðja fyrir minni, voru aldrei að gefa það aftur, og það virðist vera 661 00:28:34,710 --> 00:28:37,940 vandamál því með tímanum tölvunni minni gæti keyrt út af minni, gæti hægja 662 00:28:37,940 --> 00:28:42,110 niður, slæmur hlutur gæti gerst, ja, hvað er einfalt leiðandi lausn? 663 00:28:42,110 --> 00:28:43,140 Bara gefa það til baka. 664 00:28:43,140 --> 00:28:44,770 >> Hvernig losa þig upp að minni? 665 00:28:44,770 --> 00:28:49,970 Jæja, sem betur fer er það mjög einfalt bara segja ókeypis nafn. 666 00:28:49,970 --> 00:28:51,260 Og við höfum aldrei gert þetta áður. 667 00:28:51,260 --> 00:28:55,890 En þú getur í raun að hugsa um frjáls sem andstæðu malloc. 668 00:28:55,890 --> 00:28:58,030 ókeypis er andstæða úthlutun minni. 669 00:28:58,030 --> 00:28:59,540 Svo nú láta mig laun þetta. 670 00:28:59,540 --> 00:29:02,050 Gera Hello-2. 671 00:29:02,050 --> 00:29:04,620 Leyfðu mér að keyra það aftur. halló-2 David. 672 00:29:04,620 --> 00:29:07,290 Svo virðist það að vinna í nákvæmlega sama hátt. 673 00:29:07,290 --> 00:29:11,180 En ef ég fer aftur til Valgrind og aftur hlaupa sama stjórn á nýlega minn 674 00:29:11,180 --> 00:29:14,720 saman program, vélritun í mínu nafni eins og áður - 675 00:29:14,720 --> 00:29:15,370 nice. 676 00:29:15,370 --> 00:29:16,760 Hrúga samantekt - 677 00:29:16,760 --> 00:29:17,740 í notkun á brottför - 678 00:29:17,740 --> 00:29:19,370 núll bæti í núll blokkir. 679 00:29:19,370 --> 00:29:21,840 Og þetta er super nice, allt hrúga blokkir voru leystur. 680 00:29:21,840 --> 00:29:23,480 Enginn leki eru mögulegar. 681 00:29:23,480 --> 00:29:27,200 >> Svo koma upp, ekki með Set Vandamál 4, en með Set Vandamál 5, réttar 682 00:29:27,200 --> 00:29:30,740 og áfram, þetta of mun verða mælikvarði á réttmæti þínum 683 00:29:30,740 --> 00:29:33,630 program, hvort sem þú ert eða hafa ekki minni lekur. 684 00:29:33,630 --> 00:29:36,900 En sem betur fer, ekki aðeins hægt að ástæðu gegnum þá innsæi, sem 685 00:29:36,900 --> 00:29:40,430 er, að öllum líkindum, auðvelt fyrir lítil verkefnum en erfiðara fyrir stærri verkefnum, 686 00:29:40,430 --> 00:29:43,860 Valgrind, fyrir þá stærri forrit, getur hjálpað þér að finna 687 00:29:43,860 --> 00:29:45,360 einkum vandamál. 688 00:29:45,360 --> 00:29:47,500 >> En það er eitt annað vandamál sem gæti komið upp. 689 00:29:47,500 --> 00:29:51,245 Leyfðu mér að opna þessa skrá hér, sem er, aftur, nokkuð einfalt dæmi. 690 00:29:51,245 --> 00:29:53,760 En við skulum leggja áherslu á það Þetta forrit gerir. 691 00:29:53,760 --> 00:29:55,190 Þetta er kallað memory.c. 692 00:29:55,190 --> 00:29:58,380 Við munum senda þetta seinna í dag í Zip af frumkóða dag. 693 00:29:58,380 --> 00:30:01,610 Og eftir því að ég hef fall sem kallast F sem tekur ekki rökum og 694 00:30:01,610 --> 00:30:02,800 skilar engu. 695 00:30:02,800 --> 00:30:07,240 Í samræmi 20, ég er greinilega að lýsa yfir músina til að int og kallar það x. 696 00:30:07,240 --> 00:30:09,570 Ég framselja er aftur Verðmæti malloc. 697 00:30:09,570 --> 00:30:14,590 Og bara til að vera skýr, hversu margir bæti am Ég fá líklega aftur úr malloc 698 00:30:14,590 --> 00:30:17,080 í þessu ástandi? 699 00:30:17,080 --> 00:30:18,040 >> Sennilega 40. 700 00:30:18,040 --> 00:30:18,840 Hvar fæ þér að frá? 701 00:30:18,840 --> 00:30:22,410 Jæja, ef þú manst að int er oft 4 bæti, að minnsta kosti að það er í 702 00:30:22,410 --> 00:30:25,110 tæki, 10 sinnum 4 er augljóslega 40. 703 00:30:25,110 --> 00:30:28,920 Svo malloc er aftur inn veffang bútur af minni og geyma það 704 00:30:28,920 --> 00:30:30,800 takast á endanum í x. 705 00:30:30,800 --> 00:30:32,570 Svo að vera ljóst, hvað þá er að gerast? 706 00:30:32,570 --> 00:30:34,990 Jæja, láttu mig skipta aftur að mynd okkar hér. 707 00:30:34,990 --> 00:30:38,150 Leyfðu mér ekki bara draga neðst á mínum minni tölva ', láta mig fara á undan og 708 00:30:38,150 --> 00:30:42,990 draga alla rétthyrningur sem táknar alla RAM minni. 709 00:30:42,990 --> 00:30:44,790 >> Við munum segja að stafla er á botn. 710 00:30:44,790 --> 00:30:47,010 Og það er texti hluti í að forsniðinn gögn. 711 00:30:47,010 --> 00:30:49,880 En ég ætla bara að fara að ágrip þeirra annars burtu eins punktur, punktur punktur. 712 00:30:49,880 --> 00:30:53,470 Ég ætla bara að fara að vísa til þessa eins og hrúga efst. 713 00:30:53,470 --> 00:30:57,070 Og þá neðst á þessari mynd, til að tákna helstu, ég er að fara 714 00:30:57,070 --> 00:30:59,880 að gefa það sneiðar minni á mánudaginn. 715 00:30:59,880 --> 00:31:03,150 Fyrir f, ætla ég að gefa það a sneið minni á mánudaginn. 716 00:31:03,150 --> 00:31:05,140 Nú, ég fékk að hafa samráð mín Kóðinn aftur. 717 00:31:05,140 --> 00:31:07,170 Hvað eru staðbundnar breytur fyrir main? 718 00:31:07,170 --> 00:31:10,710 Apparently ekkert, svo að sneið raun tóm eða ekki eins stór 719 00:31:10,710 --> 00:31:11,600 eins og ég hef dregið hana. 720 00:31:11,600 --> 00:31:15,730 En í f, ég á staðnum breytu, sem heitir x. 721 00:31:15,730 --> 00:31:20,410 Þannig að ég ætla að fara á undan og gefa f bútur af minni, kalla það x. 722 00:31:20,410 --> 00:31:24,680 >> Og nú malloc af 10 sinnum 4, Svo malloc 40, hvar er þessi 723 00:31:24,680 --> 00:31:25,430 minni koma frá? 724 00:31:25,430 --> 00:31:27,530 Við höfum ekki dregið upp mynd svona áður. 725 00:31:27,530 --> 00:31:31,140 En við skulum gera ráð fyrir að það er í raun koma héðan, svo einn, 726 00:31:31,140 --> 00:31:33,170 tveir, þrír, fjórir, fimm. 727 00:31:33,170 --> 00:31:34,680 Og nú þarf ég 40 af þeim. 728 00:31:34,680 --> 00:31:37,540 Svo ég ætla bara að gera punkt, punktur, punktur að benda að það er jafnvel meira minni 729 00:31:37,540 --> 00:31:39,350 koma aftur frá hrúga. 730 00:31:39,350 --> 00:31:40,710 Nú hvað er heimilisfangið? 731 00:31:40,710 --> 00:31:42,620 Skulum velja handahófskennt okkar taka eins og alltaf - 732 00:31:42,620 --> 00:31:46,310 Ox123, jafnvel þó að það er líklega að fara að vera eitthvað allt öðruvísi. 733 00:31:46,310 --> 00:31:50,420 Það er heimilisfang fyrsta bæti í minni sem ég er að biðja malloc fyrir. 734 00:31:50,420 --> 00:31:53,630 >> Svo í stuttu máli, einu sinni línu 20 keyrir, hvað er bókstaflega 735 00:31:53,630 --> 00:31:57,170 geymd inni x hér? 736 00:31:57,170 --> 00:31:58,730 Ox123. 737 00:31:58,730 --> 00:32:00,370 Ox123. 738 00:32:00,370 --> 00:32:01,550 Og Ox er uninteresting. 739 00:32:01,550 --> 00:32:03,200 Það þýðir bara hér er sextánskur númer. 740 00:32:03,200 --> 00:32:06,490 En hvað er lykillinn er það sem ég hef geymt í x, sem er staðbundin breytu. 741 00:32:06,490 --> 00:32:10,260 En gögn gerð þess, aftur, er heimilisfang af int. 742 00:32:10,260 --> 00:32:12,710 Jæja, ég ætla að geyma Ox123. 743 00:32:12,710 --> 00:32:16,610 En aftur, ef það er aðeins of flókið óþörfu, ef ég skruna 744 00:32:16,610 --> 00:32:21,490 aftur, getum við fræðilega þetta í burtu alveg sæmilega og bara segja að x er 745 00:32:21,490 --> 00:32:23,910 músina til að klumpur af minni. 746 00:32:23,910 --> 00:32:24,070 >> OK. 747 00:32:24,070 --> 00:32:26,230 Nú er spurningin á hönd er eftirfarandi - 748 00:32:26,230 --> 00:32:29,910 lína 21, það kemur í ljós, er þrjótur. 749 00:32:29,910 --> 00:32:31,160 Hvers vegna? 750 00:32:31,160 --> 00:32:34,890 751 00:32:34,890 --> 00:32:36,930 >> Því miður? 752 00:32:36,930 --> 00:32:38,640 Það þarf ekki - 753 00:32:38,640 --> 00:32:40,390 segja að einu sinni enn. 754 00:32:40,390 --> 00:32:41,240 Jæja, er það ekki frjáls. 755 00:32:41,240 --> 00:32:42,350 Svo er það annað en. 756 00:32:42,350 --> 00:32:45,000 Svo er það eitt annað en sérstaklega á línu 21. 757 00:32:45,000 --> 00:32:49,480 758 00:32:49,480 --> 00:32:50,040 >> Einmitt. 759 00:32:50,040 --> 00:32:54,980 Þessi einfalda lína af kóða er bara biðminni flæða, biðminni umframmagn. 760 00:32:54,980 --> 00:32:57,050 A biðminni þýðir bara klumpur af minni. 761 00:32:57,050 --> 00:33:01,520 En þessi klumpur af minni er stærð 10, 10 heiltölur, sem þýðir að ef við 762 00:33:01,520 --> 00:33:05,350 Vísitala inn í það með því að nota nokkur dæmi um setningarleg sykur af merki array, veldi 763 00:33:05,350 --> 00:33:09,220 sviga, hefur þú aðgang að x krappi 0 x krappi 1 x, 764 00:33:09,220 --> 00:33:10,390 krappi punktur, punktur, punktur. 765 00:33:10,390 --> 00:33:13,270 x krappi 9 er stærsta einn. 766 00:33:13,270 --> 00:33:17,680 Svo ef ég x krappi 10, þar Ég er reyndar að fara í minni? 767 00:33:17,680 --> 00:33:19,120 >> Jæja, ef ég hef 10 int - 768 00:33:19,120 --> 00:33:21,070 skulum draga í raun allt þessara hér. 769 00:33:21,070 --> 00:33:22,700 Svo sem var fyrsta fimm. 770 00:33:22,700 --> 00:33:24,660 Hér er önnur fimm ints. 771 00:33:24,660 --> 00:33:29,580 Svo er x krappi 0 hér. x krappi 1 er hér. x krappi 9 er hér. x krappi 772 00:33:29,580 --> 00:33:37,960 10 er hér, sem þýðir að ég er að segja, í samræmi 21. tölva til setja 773 00:33:37,960 --> 00:33:39,400 númer þar? 774 00:33:39,400 --> 00:33:42,010 Talan 0 hvar? 775 00:33:42,010 --> 00:33:43,380 Jæja, það er 0, já. 776 00:33:43,380 --> 00:33:45,460 En bara sú staðreynd að 0 þess er eins konar tilviljun. 777 00:33:45,460 --> 00:33:47,140 Það gæti verið númer 50, fyrir allt við sama. 778 00:33:47,140 --> 00:33:50,480 En við erum að reyna að setja það á x krappi 10, sem er þar sem þessi 779 00:33:50,480 --> 00:33:53,700 spurningarmerki er dregin, sem er ekki gott. 780 00:33:53,700 --> 00:33:57,070 Þetta forrit gæti mjög vel hrun í kjölfarið. 781 00:33:57,070 --> 00:33:59,400 >> Nú, við skulum fara á undan og sjá hvort þetta er reyndar hvað gerist. 782 00:33:59,400 --> 00:34:02,600 Gerðu minni, þar sem skrá er kallað memory.c. 783 00:34:02,600 --> 00:34:05,950 Við skulum fara á undan og keyra the program minni. 784 00:34:05,950 --> 00:34:08,239 Þannig að við fengum heppinn, reyndar virðist það. 785 00:34:08,239 --> 00:34:09,340 Við fengum heppinn. 786 00:34:09,340 --> 00:34:11,060 En við skulum sjá hvort við hlaupum nú Valgrind. 787 00:34:11,060 --> 00:34:14,170 Við fyrstu sýn, áætlun mín gæti virðast vera fullkomlega rétt. 788 00:34:14,170 --> 00:34:18,010 En láta mig hlaupa Valgrind með - Leka-stöðva jafngildir fullur á minni. 789 00:34:18,010 --> 00:34:20,110 >> Og nú þegar ég keyrt þetta - 790 00:34:20,110 --> 00:34:21,030 áhugavert. 791 00:34:21,030 --> 00:34:26,800 Ógildur skrifa af stærð 4 á lína 21 af memory.c. 792 00:34:26,800 --> 00:34:29,284 Lína 21 af memory.c er hver? 793 00:34:29,284 --> 00:34:30,340 Ó, áhugavert. 794 00:34:30,340 --> 00:34:31,080 En bíddu. 795 00:34:31,080 --> 00:34:32,389 Stærð 4, hvað er að vísa til? 796 00:34:32,389 --> 00:34:34,969 Ég bara gerði einn skrifa, en það er stærð 4.. 797 00:34:34,969 --> 00:34:36,889 Hvers vegna er það 4? 798 00:34:36,889 --> 00:34:39,280 Það er vegna þess að það er int, sem er, aftur, fjögur bæti. 799 00:34:39,280 --> 00:34:42,510 Svo Valgrind fundið galla sem ég, glancing á númerið mitt, gerði það ekki. 800 00:34:42,510 --> 00:34:45,040 Og kannski TF þinn vildi eða vildi ekki. 801 00:34:45,040 --> 00:34:48,469 Hvað En Valgrind fyrir víst komist að við höfum gert mistök þarna, jafnvel 802 00:34:48,469 --> 00:34:52,719 þó að við fengum heppinn, og tölvan ákveðið, ha, ég er ekki að fara að hrun 803 00:34:52,719 --> 00:34:57,470 bara vegna þess að þú snert eitt bæti, einn Int er virði af minni sem þú gerðir ekki 804 00:34:57,470 --> 00:34:58,550 raunverulega eiga. 805 00:34:58,550 --> 00:35:00,380 >> Jæja, hvað er þrjótur hér. 806 00:35:00,380 --> 00:35:01,180 Heimilisfang - 807 00:35:01,180 --> 00:35:03,190 þetta er brjálaður útlit netfang í sextánskur. 808 00:35:03,190 --> 00:35:06,890 Það þýðir bara einhvers staðar í hrúga er núll bytes eftir blokk af stærð 40 809 00:35:06,890 --> 00:35:07,620 er úthlutað. 810 00:35:07,620 --> 00:35:10,610 Leyfðu mér að súmma út hér og sjá hvort þetta er svolítið meira gagni. 811 00:35:10,610 --> 00:35:11,410 Áhugavert. 812 00:35:11,410 --> 00:35:15,600 40 bytes eru örugglega misst í skrá tap 1 af 1. 813 00:35:15,600 --> 00:35:17,840 Aftur, fleiri orð en er gagnlegt hér. 814 00:35:17,840 --> 00:35:21,350 En byggt á undirstrikuð línur, hvar ætti ég að einbeita líklega minn 815 00:35:21,350 --> 00:35:24,070 athygli fyrir aðra galla? 816 00:35:24,070 --> 00:35:26,570 Útlit eins og a línu 20. memory.c. 817 00:35:26,570 --> 00:35:30,990 >> Þannig að ef við förum aftur til línu 20, sem er eitt sem þú tilgreindir áðan. 818 00:35:30,990 --> 00:35:33,030 Og það er ekki endilega þrjótur. 819 00:35:33,030 --> 00:35:35,160 En við höfum þetta snúist áhrifum hennar. 820 00:35:35,160 --> 00:35:38,790 Svo hvernig gera rétt ég að minnsta kosti einn af þeim mistökum? 821 00:35:38,790 --> 00:35:42,240 Hvað gæti ég gert eftir línu 21? 822 00:35:42,240 --> 00:35:47,110 Ég gæti gert án x, svo er að gefa til baka að minni. 823 00:35:47,110 --> 00:35:49,230 Og hvernig laga ég þetta galla? 824 00:35:49,230 --> 00:35:52,120 Ég ætti örugglega að fara ekki lengra en 0. 825 00:35:52,120 --> 00:35:53,670 Svo láta mig reyna aftur keyra þetta. 826 00:35:53,670 --> 00:35:56,080 Því miður, ákveðið að fara ekki lengra en 9. 827 00:35:56,080 --> 00:35:57,510 Gerðu minni. 828 00:35:57,510 --> 00:36:00,650 Leyfðu mér að endursýning Valgrind í stærri glugga. 829 00:36:00,650 --> 00:36:01,580 Og nú líta. 830 00:36:01,580 --> 00:36:02,250 Nice. 831 00:36:02,250 --> 00:36:03,270 Allar hrúga blokkir voru leystur. 832 00:36:03,270 --> 00:36:04,270 Enginn leki eru mögulegar. 833 00:36:04,270 --> 00:36:07,520 Og upp yfir hér, það er ekki minnst lengur að ógilda hægri. 834 00:36:07,520 --> 00:36:09,820 >> Bara til að fá gráðugur, og skulum sjá hvort annað sýning 835 00:36:09,820 --> 00:36:11,050 ekki fara eins og ætlað - 836 00:36:11,050 --> 00:36:12,560 Ég gerði fá heppinn fyrir augnabliki. 837 00:36:12,560 --> 00:36:15,530 Og sú staðreynd að þetta er 0 er ef til vill óþarflega villandi. 838 00:36:15,530 --> 00:36:20,650 Við skulum bara gera 50, nokkuð handahófskennt númer, gera minni punktur skástrik minni - 839 00:36:20,650 --> 00:36:21,410 enn fá heppinn. 840 00:36:21,410 --> 00:36:22,510 Ekkert er hrun. 841 00:36:22,510 --> 00:36:26,150 Segjum ég bara eitthvað virkilega heimska, og ég 100. 842 00:36:26,150 --> 00:36:30,360 Leyfðu mér að endurgerð minni, punktur rista minni - 843 00:36:30,360 --> 00:36:31,075 fékk heppinn aftur. 844 00:36:31,075 --> 00:36:32,800 Hvernig óður í 1000? 845 00:36:32,800 --> 00:36:35,370 ints umfram það bil, þar sem ég ætti að vera? 846 00:36:35,370 --> 00:36:37,410 Gerðu minni - 847 00:36:37,410 --> 00:36:38,570 fjandinn. 848 00:36:38,570 --> 00:36:39,920 >> [Hlátur] 849 00:36:39,920 --> 00:36:41,270 >> OK. 850 00:36:41,270 --> 00:36:43,920 Við skulum ekki skipta um lengur. 851 00:36:43,920 --> 00:36:45,120 Endursýning minni. 852 00:36:45,120 --> 00:36:45,840 Þar við förum. 853 00:36:45,840 --> 00:36:46,410 Allt í lagi. 854 00:36:46,410 --> 00:36:52,500 Svo virðist þú vísitölu 100.000 ints utan þar sem þú ættir að hafa verið í 855 00:36:52,500 --> 00:36:54,410 minni, gerast slæmur hlutur. 856 00:36:54,410 --> 00:36:56,430 Svo er þetta augljóslega ekki harður, fljótur reglu. 857 00:36:56,430 --> 00:36:58,190 Ég var eins konar nota prufa og villa til að komast þangað. 858 00:36:58,190 --> 00:37:02,230 En þetta er vegna þess, löng saga stutt, minni tölvunnar er einnig skipt 859 00:37:02,230 --> 00:37:03,580 í þessum hlutum sem kallast hluti. 860 00:37:03,580 --> 00:37:07,260 Og stundum, the tölva í raun hefur gefið þér smá meira minni 861 00:37:07,260 --> 00:37:08,400 en þú biður um. 862 00:37:08,400 --> 00:37:12,170 En fyrir skilvirkni, það er bara auðveldara að fá meira minni en aðeins segja þér 863 00:37:12,170 --> 00:37:13,780 að þú ert að fá hluta af henni. 864 00:37:13,780 --> 00:37:16,370 >> Og ef þú færð heppinn stundum, því þú might vera fær til snerta 865 00:37:16,370 --> 00:37:17,795 minni sem ekki tilheyrir þér. 866 00:37:17,795 --> 00:37:21,860 Þú hefur ekki trygging fyrir því að það gildi þú setur það mun vera þar, því 867 00:37:21,860 --> 00:37:25,080 tölvan heldur enn það er ekki Kveðja, en það er ekki endilega að fara 868 00:37:25,080 --> 00:37:29,910 að lemja aðra hluti af minni í tölva og valdið mistök eins 869 00:37:29,910 --> 00:37:31,710 þetta hér. 870 00:37:31,710 --> 00:37:32,060 Allt í lagi. 871 00:37:32,060 --> 00:37:37,240 Einhverjar spurningar þá á minni? 872 00:37:37,240 --> 00:37:37,590 >> Allt í lagi. 873 00:37:37,590 --> 00:37:40,610 Skulum taka a líta hér, þá á eitthvað sem við höfum verið að taka fyrir 874 00:37:40,610 --> 00:37:48,361 veitt fyrir alveg sumir tími, sem er í þessari skrá sem heitir cs50.h. 875 00:37:48,361 --> 00:37:49,420 Þannig að þetta er skrá. 876 00:37:49,420 --> 00:37:51,130 Þetta eru bara allt fullt af athugasemdir up ofan. 877 00:37:51,130 --> 00:37:53,900 Og þú gætir hafa horft á þetta ef þú pota í kring á tækinu. 878 00:37:53,900 --> 00:37:57,000 En það kemur í ljós að allan tímann, þegar við notuðum til að nota band sem 879 00:37:57,000 --> 00:38:01,130 samheiti, leið sem við lýst sem samheiti var með þetta 880 00:38:01,130 --> 00:38:03,990 leitarorð typedef, fyrir skilgreiningu tegund. 881 00:38:03,990 --> 00:38:07,500 Og við erum í raun að segja, að band samheiti fyrir bleikju stjörnu. 882 00:38:07,500 --> 00:38:11,190 Það leiðir sem stafla búin þessa þjálfun hjól þekktur sem 883 00:38:11,190 --> 00:38:12,040 band. 884 00:38:12,040 --> 00:38:14,830 >> Nú er hér bara frumgerð fyrir getchar. 885 00:38:14,830 --> 00:38:17,350 Við gætum hafa séð það áður, en það er örugglega hvað það gerir. getchar 886 00:38:17,350 --> 00:38:19,070 tekur engin rök, skilar bleikju. 887 00:38:19,070 --> 00:38:21,340 getdouble tekur engin rök, skilar tvöfalt. 888 00:38:21,340 --> 00:38:24,440 getfloat tekur ekki rökum, ávöxtun að fljóta, og svo framvegis. 889 00:38:24,440 --> 00:38:27,270 GetInt er hér. getlonglong er hér. 890 00:38:27,270 --> 00:38:28,820 Og getstring er hér. 891 00:38:28,820 --> 00:38:29,420 Og það er það. 892 00:38:29,420 --> 00:38:33,080 Þetta fjólubláa línan er annar Preprocessor tilskipun vegna þess að 893 00:38:33,080 --> 00:38:35,550 hashtag í upphafi þess. 894 00:38:35,550 --> 00:38:35,870 >> Allt í lagi. 895 00:38:35,870 --> 00:38:38,380 Svo nú langar mig að fara í cs50.c. 896 00:38:38,380 --> 00:38:40,400 Og við munum ekki tala of lengi á þetta. 897 00:38:40,400 --> 00:38:43,280 En til að gefa þér innsýn í hvað er verið að fara á allt þetta 898 00:38:43,280 --> 00:38:46,434 tími, láttu mig fara til - 899 00:38:46,434 --> 00:38:48,250 skulum gera getchar. 900 00:38:48,250 --> 00:38:51,050 Svo er getchar mestu athugasemdir. 901 00:38:51,050 --> 00:38:52,060 En það lítur út eins og this. 902 00:38:52,060 --> 00:38:54,800 Svo er þetta í raun virka getchar sem við höfum verið 903 00:38:54,800 --> 00:38:56,055 taka sem sjálfsögðum hlut til. 904 00:38:56,055 --> 00:38:59,370 Og jafnvel þó að við höfum notað þetta ekki einn sem oft, ef nokkurn tíma, það er að minnsta kosti 905 00:38:59,370 --> 00:39:00,470 tiltölulega einfalt. 906 00:39:00,470 --> 00:39:02,580 Svo það er þess virði að taka fljótur líta á hér. 907 00:39:02,580 --> 00:39:06,540 >> Svo hefur getchar óendanlega lykkju, vísvitandi svo virðist. 908 00:39:06,540 --> 00:39:10,050 Það kallar þá - og þetta er eins konar nice endurnýtingu kóða við sjálf skrifaði. 909 00:39:10,050 --> 00:39:11,220 Það kallar getstring. 910 00:39:11,220 --> 00:39:12,460 Vegna þess að það gerir það meina að fá bleikju? 911 00:39:12,460 --> 00:39:14,730 Jæja, þú might eins og heilbrigður reyna að fá allt lína af texta frá notanda og 912 00:39:14,730 --> 00:39:16,940 þá bara að líta á einn af þeim stafi. 913 00:39:16,940 --> 00:39:19,170 Í samræmi 60, hér er smá hluti af andleg heilbrigði stöðva. 914 00:39:19,170 --> 00:39:21,610 Ef getstring aftur null, skulum ekki halda áfram. 915 00:39:21,610 --> 00:39:22,820 Eitthvað fór úrskeiðis. 916 00:39:22,820 --> 00:39:28,120 >> Nú er þetta nokkuð pirrandi en venjulegur í C. bleikju max sennilega 917 00:39:28,120 --> 00:39:29,960 táknar það bara byggist á heiti þess? 918 00:39:29,960 --> 00:39:31,670 Það er stöðug. 919 00:39:31,670 --> 00:39:36,040 Það er eins og tölugildið af Stærsta bleikju þú getur táknað með 920 00:39:36,040 --> 00:39:40,370 eitt bit, sem er líklega númer 255, sem er stærsta númerið sem 921 00:39:40,370 --> 00:39:42,720 tákna átta bita, byrja frá núlli. 922 00:39:42,720 --> 00:39:47,460 Þannig að ég hef notað þetta, í þessari aðgerð, þegar skrifa þennan kóða, bara vegna þess að 923 00:39:47,460 --> 00:39:51,753 ef eitthvað fer úrskeiðis í getchar en tilgangur þess í lífinu er að fara aftur á 924 00:39:51,753 --> 00:39:54,830 bleikju, þú þarft að einhvern veginn að geta að merki til notanda sem 925 00:39:54,830 --> 00:39:55,840 eitthvað fór úrskeiðis. 926 00:39:55,840 --> 00:39:56,970 Við getum ekki snúið aftur null. 927 00:39:56,970 --> 00:39:58,480 Það kemur í ljós að null er bendillinn. 928 00:39:58,480 --> 00:40:01,030 Og aftur, getchar hefur að skila bleikju. 929 00:40:01,030 --> 00:40:04,760 >> Svo venju, ef eitthvað fer rangt, er þú, sem forritari, eða í 930 00:40:04,760 --> 00:40:08,160 þetta mál, með bókasafni mig, ég hafði A ákveðið bara geðþótta, ef 931 00:40:08,160 --> 00:40:12,230 eitthvað fer úrskeiðis, ég ætla að til baka í númerið 255, sem er sannarlega 932 00:40:12,230 --> 00:40:17,240 þýðir að við getum ekki, getur notandinn ekki að slá eðli fulltrúa af 933 00:40:17,240 --> 00:40:21,410 númer 255 því við vorum að stela henni sem svokölluðu Sentinel gildi til 934 00:40:21,410 --> 00:40:23,410 tákna vandamál. 935 00:40:23,410 --> 00:40:27,010 Nú kemur í ljós að eðli 255 er ekki eitthvað sem þú getur slegið á 936 00:40:27,010 --> 00:40:28,380 lyklaborðið, svo það er ekki máli. 937 00:40:28,380 --> 00:40:30,910 Notandinn hefur ekki tekið eftir því Ég hef stolið þennan staf. 938 00:40:30,910 --> 00:40:34,620 En ef þú sérð alltaf í síðum mann á tölvukerfi sumir tilvísun til 939 00:40:34,620 --> 00:40:38,560 allar húfur stöðug eins og þetta sem segir, í tilvikum villu þetta fastan gæti 940 00:40:38,560 --> 00:40:42,720 skilað, það er allt sumir menn gerðu árum var geðþótta ákveðið að 941 00:40:42,720 --> 00:40:45,680 aftur þetta sérstaka gildi og kalla það stöðugt í tilfelli 942 00:40:45,680 --> 00:40:46,840 eitthvað fer úrskeiðis. 943 00:40:46,840 --> 00:40:48,580 >> Nú gerist galdur niður hér. 944 00:40:48,580 --> 00:40:52,600 Fyrst, ég er að lýsa í línu 67 tveir stafir, C1 og C2. 945 00:40:52,600 --> 00:40:57,080 Og þá í línu 68, það er í raun A lína af kóða sem er minnir á 946 00:40:57,080 --> 00:41:01,140 vinur okkar printf, í ljósi þess að það hjartarskinn hafa prósent CS innan gæsalappa. 947 00:41:01,140 --> 00:41:06,490 En taka eftir hvað er að gerast hér. sscanf þýðir band grannskoða - 948 00:41:06,490 --> 00:41:11,690 þýðir skanna sniðinn band, Ergo sscanf. 949 00:41:11,690 --> 00:41:12,590 Hvað þýðir það? 950 00:41:12,590 --> 00:41:16,310 Það þýðir að þú fara til sscanf streng. 951 00:41:16,310 --> 00:41:18,420 Og lína er hvað sem notandinn slær inn 952 00:41:18,420 --> 00:41:23,520 Þú fara að sscanf sniði band eins þetta sem segir scanf hvað eru 953 00:41:23,520 --> 00:41:25,870 þú vona að notandinn hefur slegið inn 954 00:41:25,870 --> 00:41:29,730 Þú framhjá-í þá heimilisföng tveggja klumpur af minni, í þessu tilfelli, 955 00:41:29,730 --> 00:41:31,150 vegna þess að ég hef tvær staðgengla. 956 00:41:31,150 --> 00:41:34,610 Þannig að ég ætla að gefa það heimilisfang af C1 og veffang C2. 957 00:41:34,610 --> 00:41:37,700 >> Og muna að þú gefur fall sem heimilisfang sumir breytu, hvað er 958 00:41:37,700 --> 00:41:38,950 The vísbendingu? 959 00:41:38,950 --> 00:41:41,400 960 00:41:41,400 --> 00:41:45,050 Hvað er hægt að virka að gera sem afleiðing að gefa það veffang sem 961 00:41:45,050 --> 00:41:48,170 breytilegt, í stað þess að breytan sig? 962 00:41:48,170 --> 00:41:49,450 Það getur breytt því, ekki satt? 963 00:41:49,450 --> 00:41:53,250 Ef þú hefðir einhvern korti til líkamlega heimilisfang, geta þeir fara þangað og gera 964 00:41:53,250 --> 00:41:54,750 hvað sem þeir vilja á þetta netfang. 965 00:41:54,750 --> 00:41:55,800 Sama hugmynd hér. 966 00:41:55,800 --> 00:41:59,950 Ef við fara til sscanf, heimilisfang tveggja klumpur af minni, jafnvel þessir pínulítill 967 00:41:59,950 --> 00:42:03,585 litla klumpur af minni, C1 og C2, en við segja það veffang þeirra, 968 00:42:03,585 --> 00:42:05,170 sscanf getur breytt því. 969 00:42:05,170 --> 00:42:08,530 >> Svo tilgangur sscanf í lífinu, ef við lesum maðurinn síðu, er að lesa það sem 970 00:42:08,530 --> 00:42:13,420 notandi slegið inn, vona að notandi að þurfa slegið í karakter og kannski 971 00:42:13,420 --> 00:42:16,470 annað eðli, og hvað notandinn slegið, fyrsti stafurinn fer 972 00:42:16,470 --> 00:42:19,310 hér, annað eðli fer hér. 973 00:42:19,310 --> 00:42:22,470 Nú, eins og innskot, þetta, og þú vildi aðeins vita þetta úr gögnum, 974 00:42:22,470 --> 00:42:25,570 sú staðreynd að ég setti inn bil þar þýðir bara að ég er alveg sama þótt 975 00:42:25,570 --> 00:42:28,440 notandinn smellir á bil bar nokkrar sinnum áður en hann eða hún tekur 976 00:42:28,440 --> 00:42:30,400 eðli, ætla ég að hunsa allir hvítt rúm. 977 00:42:30,400 --> 00:42:32,510 Svo að, ég veit af skjölin. 978 00:42:32,510 --> 00:42:36,570 >> Sú staðreynd að það er annað% C eftir hvítum rúm er í raun 979 00:42:36,570 --> 00:42:37,410 vísvitandi. 980 00:42:37,410 --> 00:42:41,190 Ég vil vera fær um að uppgötva ef notandinn ruglaður upp eða ekki vinna. 981 00:42:41,190 --> 00:42:45,630 Þannig að ég er að vonast til þess að notandinn aðeins slegið í einum staf, því ég er að vonast 982 00:42:45,630 --> 00:42:50,640 að sscanf er bara að fara að skila gildi 1. vegna þess, aftur, ef ég las 983 00:42:50,640 --> 00:42:55,400 skjölin, tilgangur sscanf í lífið er að fara aftur til fjölda 984 00:42:55,400 --> 00:42:59,170 breytur sem voru fyllt með notandi inntak. 985 00:42:59,170 --> 00:43:02,270 >> Ég fór í tveimur breytum heimilisföng, C1 og C2. 986 00:43:02,270 --> 00:43:06,420 Ég vona þó, að aðeins einn af þá fær drepinn vegna þess að ef sscanf 987 00:43:06,420 --> 00:43:11,130 skilar 2, hvað er væntanlega The vísbendingu rökrétt? 988 00:43:11,130 --> 00:43:14,600 Að notandinn ekki bara gefa mér einn eðli eins og ég sagði honum eða henni. 989 00:43:14,600 --> 00:43:17,860 Þeir slegið líklega amk tveir stafir. 990 00:43:17,860 --> 00:43:22,430 Þannig að ef ég staðinn ekki hafa annað % C, ég þurfti bara einn, sem 991 00:43:22,430 --> 00:43:25,370 hreinskilnislega væri meira innsæi nálgun, ég held fyrstu sýn, 992 00:43:25,370 --> 00:43:30,220 þú ert ekki að fara að vera fær um að uppgötva ef notandi hefur verið að gefa þér meira 993 00:43:30,220 --> 00:43:31,780 inntak en þú vildir í raun. 994 00:43:31,780 --> 00:43:34,100 Svo er þetta óbeina mynd af stöðva villa. 995 00:43:34,100 --> 00:43:35,640 >> En taka það sem ég geri hér. 996 00:43:35,640 --> 00:43:39,970 Þegar ég er viss um að notandinn gaf mér einn eðli, losa ég línu, gera 997 00:43:39,970 --> 00:43:44,450 andstæða getstring, sem aftur notar malloc, og þá er ég aftur 998 00:43:44,450 --> 00:43:51,030 C1, eðli sem ég vonast til að notandi veitt og einungis veitt. 999 00:43:51,030 --> 00:43:54,680 Svo fljótur glittir aðeins, en einhverjar spurningar um getchar? 1000 00:43:54,680 --> 00:43:57,450 1001 00:43:57,450 --> 00:43:59,590 Við munum koma aftur til sumir af the annar. 1002 00:43:59,590 --> 00:44:03,770 >> Jæja, láttu mig fara á undan og gera þetta - Segjum nú, bara til að hvetja okkar 1003 00:44:03,770 --> 00:44:08,910 umfjöllun í viku plús tíma, þetta er skrá sem heitir structs.h. 1004 00:44:08,910 --> 00:44:11,440 Og aftur, þetta er bara bragðið um eitthvað sem framundan er. 1005 00:44:11,440 --> 00:44:13,090 En eftir því mikið þetta er athugasemdir. 1006 00:44:13,090 --> 00:44:17,440 Svo láta mig benda aðeins áhugaverður hluti fyrir nú. 1007 00:44:17,440 --> 00:44:18,020 typedef - 1008 00:44:18,020 --> 00:44:19,700 það er sama leitarorð aftur. 1009 00:44:19,700 --> 00:44:23,100 typedef við notum til að lýsa band sem sérstakt gögn tegund. 1010 00:44:23,100 --> 00:44:27,490 Þú getur notað typedef að búa til vörumerki nýr gögn tegundir sem ekki eru fyrir hendi þegar 1011 00:44:27,490 --> 00:44:28,570 C var fundið. 1012 00:44:28,570 --> 00:44:32,520 Til dæmis, int koma með C. bleikju koma með C. tvöfaldur koma með C. En 1013 00:44:32,520 --> 00:44:34,000 það er engin hugmynd um nemanda. 1014 00:44:34,000 --> 00:44:37,230 Og enn væri nokkuð gagnlegt til að vera fær að skrifa forrit sem geymir 1015 00:44:37,230 --> 00:44:40,440 í breytu, kennitala nemandans, nafn þeirra, og hús þeirra. 1016 00:44:40,440 --> 00:44:42,890 Í öðrum orðum, þrjú stykki gagna, eins og við int og 1017 00:44:42,890 --> 00:44:44,420 band og annar strengur. 1018 00:44:44,420 --> 00:44:48,220 >> Með typedef, hvað er nokkuð öflugur um þetta og leitarorðið sturct fyrir 1019 00:44:48,220 --> 00:44:53,660 uppbyggingu, þú forritari árið 2013, geta í raun skilgreina Eiga þinn 1020 00:44:53,660 --> 00:44:57,530 gögn tegundir sem ekki eru fyrir hendi ár síðan en það hentar tilgangi þínum. 1021 00:44:57,530 --> 00:45:01,910 Og svo hér í línum 13. með 19, við erum að lýsa yfir ný gögn tegund, eins og 1022 00:45:01,910 --> 00:45:04,320 int, en kalla það nemandi. 1023 00:45:04,320 --> 00:45:09,310 Og innan þessa breytu er að fara að vera þrír hlutir - int, a band, 1024 00:45:09,310 --> 00:45:09,930 og streng. 1025 00:45:09,930 --> 00:45:13,040 Svo er hægt að hugsa um hvað er í raun gerðist hér, jafnvel þó að þetta sé 1026 00:45:13,040 --> 00:45:17,160 hluti af einföldun í dag, nemandi er í raun að fara 1027 00:45:17,160 --> 00:45:19,450 að líta svona út. 1028 00:45:19,450 --> 00:45:22,580 Þess að fara til vera a klumpur af minni með ID, nafn 1029 00:45:22,580 --> 00:45:25,580 sviði, og hús sviði. 1030 00:45:25,580 --> 00:45:30,670 Og við munum vera fær um að nota þá klumpur af minni og nálgast þær sem hér segir. 1031 00:45:30,670 --> 00:45:38,870 >> Ef ég fer inn struct0.c, hér er tiltölulega langur, en í kjölfar 1032 00:45:38,870 --> 00:45:42,630 mynstur, af kóða sem notar þetta nýtt bragð. 1033 00:45:42,630 --> 00:45:45,790 Svo fyrst, láta mig að vekja athygli þína að áhugaverðum hlutum upp ofan. 1034 00:45:45,790 --> 00:45:49,670 Sharp skilgreinir nemendur 3, lýsir fastann nemendur og úthlutar 1035 00:45:49,670 --> 00:45:53,450 það geðþótta fjölda 3, bara þannig að ég hef þrjá nemendur með 1036 00:45:53,450 --> 00:45:54,830 þetta forrit fyrir nú. 1037 00:45:54,830 --> 00:45:55,960 Hér kemur Main. 1038 00:45:55,960 --> 00:45:58,860 Og tilkynningu, hvernig ég staðfesti fylki nemenda? 1039 00:45:58,860 --> 00:46:00,480 Jæja, ég nota bara sama setningafræði. 1040 00:46:00,480 --> 00:46:02,110 Orðið nemandi er augljóslega ný. 1041 00:46:02,110 --> 00:46:04,790 En nemandi, flokkur, krappi nemendur. 1042 00:46:04,790 --> 00:46:06,720 >> Svo því miður er mikið endurnýta á hugtökum hér. 1043 00:46:06,720 --> 00:46:07,660 Þetta er bara tala. 1044 00:46:07,660 --> 00:46:09,040 Svo er þetta eins og að segja þrjár. 1045 00:46:09,040 --> 00:46:11,430 Class er bara það sem ég vil til að hringja í breytu. 1046 00:46:11,430 --> 00:46:12,840 Ég gæti kalla það nemendur. 1047 00:46:12,840 --> 00:46:15,880 En flokkur, þetta er ekki tegund í að mótmæla stilla Java konar hátt. 1048 00:46:15,880 --> 00:46:17,220 Það er bara flokkur nemenda. 1049 00:46:17,220 --> 00:46:20,590 Og gögn gerð af sérhver frumefni í því fylki er nemandi. 1050 00:46:20,590 --> 00:46:23,040 Þannig að þetta er svolítið öðruvísi og frá að segja eitthvað 1051 00:46:23,040 --> 00:46:25,250 eins og þetta, það er bara - 1052 00:46:25,250 --> 00:46:29,500 Ég er að segja gefa mér þrjár nemendur og kalla þessi array bekknum. 1053 00:46:29,500 --> 00:46:29,800 >> Allt í lagi. 1054 00:46:29,800 --> 00:46:30,680 Nú er hér fjögurra lykkja. 1055 00:46:30,680 --> 00:46:33,480 Þekki þennan gaur er - iterate frá núll á allt að þremur. 1056 00:46:33,480 --> 00:46:35,160 Og hér er ný stykki af setningafræði. 1057 00:46:35,160 --> 00:46:37,710 The program er að fara að hvetja mig, manna, að gefa það a nemandi 1058 00:46:37,710 --> 00:46:39,200 ID, sem er int. 1059 00:46:39,200 --> 00:46:44,650 Og hér er setningafræði sem þú getur geyma eitthvað í ID sviði á 1060 00:46:44,650 --> 00:46:48,630 Staðsetning flokki krappi I. Svo þetta setningafræði er ekki nýr. 1061 00:46:48,630 --> 00:46:51,450 Þetta þýðir bara að gefa mér áttundi nemandi í bekknum. 1062 00:46:51,450 --> 00:46:52,940 En þetta tákn er nýtt. 1063 00:46:52,940 --> 00:46:56,320 Hingað til höfum við getum ekki notað punkt, amk í kóða svona. 1064 00:46:56,320 --> 00:47:01,490 Þetta þýðir að fara á strúktúr sem kallast nemandi og setja eitthvað þar. 1065 00:47:01,490 --> 00:47:05,670 Á sama hátt, í þessu næstu línu, 31, fara undan og setja hvað sem notandinn slær 1066 00:47:05,670 --> 00:47:10,530 að nafni hér og hvað þeir gera fyrir hús, það sama, fara á undan og 1067 00:47:10,530 --> 00:47:13,230 setja það í. húsinu. 1068 00:47:13,230 --> 00:47:15,955 >> Svo hvað þýðir þetta forrit lokum gera? 1069 00:47:15,955 --> 00:47:17,220 Þú getur séð smá beitu þar. 1070 00:47:17,220 --> 00:47:24,780 Leyfðu mér að fara á undan og gera structs 0 punktur rista struct 0, ID nemandans 1, 1071 00:47:24,780 --> 00:47:28,250 segja David Mather, nemandi ID 2.. 1072 00:47:28,250 --> 00:47:32,070 Rob Kirkland, nemandi ID 3.. 1073 00:47:32,070 --> 00:47:35,010 Lauren Leverit - 1074 00:47:35,010 --> 00:47:38,380 og það eina sem þetta forrit gerði, sem er bara alveg handahófskennt, er 1075 00:47:38,380 --> 00:47:40,980 Mig langaði til að gera eitthvað við þessum gögnum, nú að ég hef kennt okkur hvernig á að 1076 00:47:40,980 --> 00:47:43,450 nota structs, er ég hafði bara Þessi auka lykkja hér. 1077 00:47:43,450 --> 00:47:45,260 Ég iterate yfir fjölda nemenda. 1078 00:47:45,260 --> 00:47:49,170 Ég notaði, okkar kannski nú þekki vin, band bera, stircomp til 1079 00:47:49,170 --> 00:47:53,780 stöðva er hús 8 nemandans jafnt Mather? 1080 00:47:53,780 --> 00:47:56,760 Og ef svo er, bara prenta eitthvað geðþótta eins, já, það er. 1081 00:47:56,760 --> 00:47:59,430 En aftur, bara að gefa mér tækifæri að nota og endurnýta og 1082 00:47:59,430 --> 00:48:02,270 endurnýta þetta nýja punktur tákn. 1083 00:48:02,270 --> 00:48:03,250 >> Svo hver blíðuhót, ekki satt? 1084 00:48:03,250 --> 00:48:06,270 Tilkoma upp með nemandi program er nokkuð handahófskennt, en það kemur í ljós 1085 00:48:06,270 --> 00:48:09,800 að við getum gert gagnlegur hlutur með þetta, til dæmis eins og hér segir. 1086 00:48:09,800 --> 00:48:14,600 Þetta er miklu flóknara strúktúr í C. Það er got a tylft eða fleiri sviðum, 1087 00:48:14,600 --> 00:48:15,880 nokkuð cryptically heitir. 1088 00:48:15,880 --> 00:48:20,110 En ef þú hefur einhvern tíma heyrt af grafík skráarsnið sem heitir punktamynd, BMP, það 1089 00:48:20,110 --> 00:48:22,830 kemur í ljós að punktamynd skrá snið laglegur lítur mikið eins og þessi það. 1090 00:48:22,830 --> 00:48:24,200 Það er heimskulegt lítið bros andlit. 1091 00:48:24,200 --> 00:48:27,840 Það er lítið mynd sem ég hef aðdregna í á nokkuð stór svo að ég gæti séð hver 1092 00:48:27,840 --> 00:48:30,410 einstakra punkta eða díla. 1093 00:48:30,410 --> 00:48:33,800 Nú snýr það út að við getum táknað með svartur punktur með, segja, að talan 0. 1094 00:48:33,800 --> 00:48:35,520 Og hvítt punktur með númer 1. 1095 00:48:35,520 --> 00:48:39,140 >> Svo í öðrum orðum, ef þú vilt að teikna Smiley andlit og vista sem mynd í 1096 00:48:39,140 --> 00:48:42,680 tölva, nægir það til að geyma núll og þau sem líta út eins og þetta, þar, 1097 00:48:42,680 --> 00:48:45,250 aftur, eru þær hvítar og núll eru svartir. 1098 00:48:45,250 --> 00:48:48,290 Og saman, ef þú hefur í raun A gyrða af sjálfur og núll, þú hafa a 1099 00:48:48,290 --> 00:48:51,030 rist punkta, og ef þú leggja þá út, þú sætur 1100 00:48:51,030 --> 00:48:52,560 lítið bros andlit. 1101 00:48:52,560 --> 00:48:58,150 Nú, punktamynd skrá snið, BMP, er raun að undir hetta, 1102 00:48:58,150 --> 00:49:00,970 en með fleiri punkta Sot sem þú geta í raun tákna liti. 1103 00:49:00,970 --> 00:49:05,170 >> En þegar þú ert með fleiri háþróaður skrá snið eins og BMP og JPEG og GIF 1104 00:49:05,170 --> 00:49:09,360 sem þú gætir verið kunnugt, þá skrár á diski yfirleitt ekki aðeins 1105 00:49:09,360 --> 00:49:13,760 hafa núll og sjálfur fyrir punkta, en þeir hafa sumir lýsigögn eins vel - 1106 00:49:13,760 --> 00:49:16,960 Meta í þeim skilningi sem er í raun ekki gögn en það er gott að hafa. 1107 00:49:16,960 --> 00:49:21,370 Svo þessir reitir hér eru að gefa til kynna, og við munum sjá þetta nánar í P-setja 1108 00:49:21,370 --> 00:49:25,810 5, að áður en núll og sjálfur að tákna punktar í mynd, 1109 00:49:25,810 --> 00:49:29,110 það er fullt af lýsigögn eins the stærð af myndinni og 1110 00:49:29,110 --> 00:49:30,250 breidd myndarinnar. 1111 00:49:30,250 --> 00:49:32,910 Og eftir ég ætla plokkun burt sumir handahófskennt hlutir hér - 1112 00:49:32,910 --> 00:49:34,260 breidd og hæð. 1113 00:49:34,260 --> 00:49:36,160 Bit telja og nokkur önnur atriði. 1114 00:49:36,160 --> 00:49:37,840 Svo er það einhver lýsigögn í skrá. 1115 00:49:37,840 --> 00:49:41,470 >> En með því að skilja hvernig skrár eru sett út á þennan hátt, getur þú í raun 1116 00:49:41,470 --> 00:49:45,890 þá vinna myndir, batna myndir af diski, búa ímynd. 1117 00:49:45,890 --> 00:49:47,560 En þú getur ekki endilega auka þau. 1118 00:49:47,560 --> 00:49:48,480 Ég þurfti mynd. 1119 00:49:48,480 --> 00:49:52,840 Svo ég fór aftur til RJ hér, sem þú sást á skjánum alveg sumir tími fyrir. 1120 00:49:52,840 --> 00:49:57,160 Og ef ég opna grunntónn hér, þetta er hvað gerist ef þú reynir að súmma inn og 1121 00:49:57,160 --> 00:49:59,380 auka RJ. 1122 00:49:59,380 --> 00:50:01,480 Hann er ekki að fá allir betri raun. 1123 00:50:01,480 --> 00:50:06,240 Nú er Keynote konar blurring það svolítið, bara til að gljái yfir 1124 00:50:06,240 --> 00:50:11,040 staðreynd að RJ ekki fá sérstaklega auka þegar þú zoom inn 1125 00:50:11,040 --> 00:50:13,310 Og ef gera það með þessum hætti, sjá ferninga? 1126 00:50:13,310 --> 00:50:15,490 Já, getur þú ákveðið að sjá reitirnir á skjávarpa. 1127 00:50:15,490 --> 00:50:17,690 >> Það er það sem þú færð þegar þú bæta. 1128 00:50:17,690 --> 00:50:22,570 En í því að skilja hvernig RJ okkar eða Smiley andlit er útfærð vilja láta okkur 1129 00:50:22,570 --> 00:50:24,950 reyndar skrifa kóða sem vinnur þetta. 1130 00:50:24,950 --> 00:50:29,970 Og ég hélt að ég myndi enda á þessum minnismiða, með 55 sekúndur af auka það er, 1131 00:50:29,970 --> 00:50:31,230 Ég þori að segja frekar villandi. 1132 00:50:31,230 --> 00:50:32,990 >> [Vídeó spilun] 1133 00:50:32,990 --> 00:50:34,790 >> -Hann er að ljúga. 1134 00:50:34,790 --> 00:50:38,310 Um hvað veit ég ekki. 1135 00:50:38,310 --> 00:50:41,200 >> -Og hvað vitum við? 1136 00:50:41,200 --> 00:50:45,280 >> -Það á 09:15 Ray Santoya var á hraðbanka. 1137 00:50:45,280 --> 00:50:47,830 >> -Svo er spurning hvað var hann að gera á 9:16? 1138 00:50:47,830 --> 00:50:50,750 >> -Skjóta níu millimetra á eitthvað. 1139 00:50:50,750 --> 00:50:52,615 Kannski hann sá leyniskytta. 1140 00:50:52,615 --> 00:50:54,760 >> -Eða var að vinna með honum. 1141 00:50:54,760 --> 00:50:56,120 >> -Bíddu. 1142 00:50:56,120 --> 00:50:57,450 Fara aftur um eitt. 1143 00:50:57,450 --> 00:50:58,700 >> -Hvað sérð þú? 1144 00:50:58,700 --> 00:51:05,530 1145 00:51:05,530 --> 00:51:09,490 >> -Koma andlit hans upp, fullur skjár. 1146 00:51:09,490 --> 00:51:09,790 >> -Hans gleraugu. 1147 00:51:09,790 --> 00:51:11,040 >> -Það er spegilmynd. 1148 00:51:11,040 --> 00:51:21,790 1149 00:51:21,790 --> 00:51:23,520 >> -Það er Neuvitas Baseball lið. 1150 00:51:23,520 --> 00:51:24,530 Það er merki þeirra. 1151 00:51:24,530 --> 00:51:27,040 >> -Og hann er að tala við hver sem er þreytandi að jakka. 1152 00:51:27,040 --> 00:51:27,530 >> [END vídeó spilun] 1153 00:51:27,530 --> 00:51:29,180 >> DAVID J. Malan: Þetta mun vera Heimadæmi 5. 1154 00:51:29,180 --> 00:51:30,720 Við munum sjá þig í næstu viku. 1155 00:51:30,720 --> 00:51:32,330 >> MALE Ræðumaður: Á næstu CS50. 1156 00:51:32,330 --> 00:51:39,240 >> [Crickets chirping] 1157 00:51:39,240 --> 00:51:41,270 >> [Tónlist spila]