1 00:00:00,000 --> 00:00:00,499 2 00:00:00,499 --> 00:00:01,395 [Musika jotzen] 3 00:00:01,395 --> 00:00:05,590 4 00:00:05,590 --> 00:00:07,940 >> DOUG LLOYD: OK beraz iradokizun bat Hemen hasi aurretik. 5 00:00:07,940 --> 00:00:11,660 Ez duzu bideoa ikusi ditut bada Erakusleak, beraz, lehen egin nahi duzu. 6 00:00:11,660 --> 00:00:15,860 Bideo honetan dagoelako beste erakusleak lan egiteko modua. 7 00:00:15,860 --> 00:00:17,574 >> Beraz, hitz egin zenbait kontzeptu buruz 8 00:00:17,574 --> 00:00:19,490 estaltzeko garela batean Bideo erakusleak, eta ez gara 9 00:00:19,490 --> 00:00:21,948 Horien gainetik distira orain, Dagoeneko Oraindik dutela suposatuz 10 00:00:21,948 --> 00:00:23,090 Sort ulertu. 11 00:00:23,090 --> 00:00:25,440 Beraz, zure arrazoizko abisua besterik ez da duzula bideo hau ikusten ari bazara 12 00:00:25,440 --> 00:00:27,814 eta ez duzu ikusi du erakusleak bideo, baliteke Sort 13 00:00:27,814 --> 00:00:29,610 buru gainetik hegan pixka bat. 14 00:00:29,610 --> 00:00:32,080 Eta beraz, hobe daiteke behatu ordena horretan. 15 00:00:32,080 --> 00:00:34,710 >> Beraz, ikusi dugu dagoeneko inork Bide erakusle batekin lan, 16 00:00:34,710 --> 00:00:37,810 hau da, bat aldarrikatzen dugu aldakorra, eta gero guk 17 00:00:37,810 --> 00:00:42,160 beste aldagai bat deklaratzen, erakuslea aldakorra, dela seinalatzen. 18 00:00:42,160 --> 00:00:44,870 Beraz, sortu dugu bat izen batekin aldakorra, dugu 19 00:00:44,870 --> 00:00:48,480 bigarren aldagai bat sortu izen batekin, eta azpimarratu dugu bigarren aldagai hori 20 00:00:48,480 --> 00:00:50,220 Lehenengo hartan. 21 00:00:50,220 --> 00:00:52,370 Honen moduko bat dauka Arazoa ordea, delako 22 00:00:52,370 --> 00:00:54,650 zehazki jakin behar ditugu zenbat memoria gaude 23 00:00:54,650 --> 00:00:57,600 Oraingoz behar joan Gure programa konpilatu. 24 00:00:57,600 --> 00:00:58,220 >> Zergatik da hori? 25 00:00:58,220 --> 00:01:03,338 Izendatzeko gai izan behar dugulako edo aldagai posibleen guztiak identifikatzeko 26 00:01:03,338 --> 00:01:04,129 agian topo egingo dugu. 27 00:01:04,129 --> 00:01:07,910 Baliteke egongo den array bat daukagu informazio asko eduki ahal, 28 00:01:07,910 --> 00:01:10,110 baina ez da oraindik zehazki nahikoa zehatza. 29 00:01:10,110 --> 00:01:12,640 Zer ez badugu, zer ideia ez badugu 30 00:01:12,640 --> 00:01:14,370 zenbat biltzeko ordua bilatuko dugu behar? 31 00:01:14,370 --> 00:01:17,020 Edo zer gure programa hala nahi izanez gero benetan luze iraungo du, 32 00:01:17,020 --> 00:01:19,810 Erabiltzaile hainbat onartuz datuak, eta ezin dugu benetan 33 00:01:19,810 --> 00:01:23,170 balioesteko ari garen ala ez 1.000 unitate behar du? 34 00:01:23,170 --> 00:01:26,060 >> Ez da ahal dugun lerroan esaten 35 00:01:26,060 --> 00:01:28,040 Sar elementuak zenbat Uste duzu behar duzu. 36 00:01:28,040 --> 00:01:31,100 Beno zer asmatzen oker dago bada? 37 00:01:31,100 --> 00:01:34,300 Memoria esleipena dinamiko Sort ematen digu modu 38 00:01:34,300 --> 00:01:36,867 den arazo jakin honen inguruan. 39 00:01:36,867 --> 00:01:38,700 Eta bidea egiten da erakusleak erabiliz. 40 00:01:38,700 --> 00:01:42,140 >> Erakusleak erabili ahal izango dugu sarrera lortzeko dinamikoki 41 00:01:42,140 --> 00:01:45,710 esleitu memoria, memoria hori da Zure programa egozten martxan dago. 42 00:01:45,710 --> 00:01:48,290 Ez Konpilatzerakoan esleitu. 43 00:01:48,290 --> 00:01:51,570 When dinamikoki esleitu memoria dator putzu bat da 44 00:01:51,570 --> 00:01:53,795 memoria-meta bezala ezagutzen. 45 00:01:53,795 --> 00:01:56,420 Aurretik memoria guztia dugu aritu da ikastaroa batera 46 00:01:56,420 --> 00:01:59,920 izan igerileku bat datozen memoria pila bezala ezagutzen. 47 00:01:59,920 --> 00:02:02,470 A modu ona da, oro har, mind-- eta honek arau mantendu 48 00:02:02,470 --> 00:02:04,720 Ez du beti eutsi egia, baina nahiko askoz ia 49 00:02:04,720 --> 00:02:09,940 beti dauka true-- da edozein dela denbora aldagai izen bat ematen dizute 50 00:02:09,940 --> 00:02:12,090 seguruenik, pila bizi da. 51 00:02:12,090 --> 00:02:14,650 Eta edozein ez duzu aldagai bat, izen bat eman, 52 00:02:14,650 --> 00:02:19,160 bertan memoria dinamiko batekin egin dezakezu esleipena, bizi zeure gainean da. 53 00:02:19,160 --> 00:02:22,190 >> Orain Mota naiz hau aurkezteko bi memoria igerileku horiek ez bada. 54 00:02:22,190 --> 00:02:24,740 Baina ikusi ahal izango duzu hau diagram, hau da, oro har, 55 00:02:24,740 --> 00:02:27,290 ordezkaritza bat zer memoria itxura du, 56 00:02:27,290 --> 00:02:30,373 eta ez gara guztiak kezkatzen joan goiko eta beheko aldean dagoen gauza. 57 00:02:30,373 --> 00:02:33,580 Zer buruz zaintzen dugu zati hau erditik, hemen, arazoak izaten ari da eta pila. 58 00:02:33,580 --> 00:02:35,570 Ikusi ahal izango den bezala diagrama honetan begira, 59 00:02:35,570 --> 00:02:38,390 horiek benetan ez dira bi memoria igerilekuak bereiziak. 60 00:02:38,390 --> 00:02:42,757 Da memoria putzu shared bat egiten Bertan, hasten zara bisuala honetan 61 00:02:42,757 --> 00:02:44,590 hasteko, behealdean eta martxan betez 62 00:02:44,590 --> 00:02:48,040 pila batera hondoan, eta zuk goialdean hasi eta martxan betez 63 00:02:48,040 --> 00:02:50,072 goitik behera zeure from. 64 00:02:50,072 --> 00:02:51,780 Baina benetan da igerileku berean, besterik ez da 65 00:02:51,780 --> 00:02:56,050 lekuak ezberdinak, leku desberdinetan memoria hori esleituko ari dira. 66 00:02:56,050 --> 00:02:59,060 Atera eta zuk exekutatu daiteke bai edukitzea memoria 67 00:02:59,060 --> 00:03:01,240 zeure modu guztiak joan beheraino, edo dute 68 00:03:01,240 --> 00:03:05,440 pilaren modu guztiak joan, goiko aldean, edo zeure eta pila izatea 69 00:03:05,440 --> 00:03:06,740 elkartu bata bestearen aurka. 70 00:03:06,740 --> 00:03:09,500 Horiek guztiek baldintza izan daiteke Hori da zure programa sor 71 00:03:09,500 --> 00:03:11,030 den memoria agortu. 72 00:03:11,030 --> 00:03:11,952 Beraz, kontuan izan hori. 73 00:03:11,952 --> 00:03:13,660 When buruz hitz egiten dugu zeure eta pila 74 00:03:13,660 --> 00:03:17,880 dugu benetan hitz egiten ari bera memoria zatia general, besterik 75 00:03:17,880 --> 00:03:21,930 Memoria horren zati desberdinek. 76 00:03:21,930 --> 00:03:24,910 >> Beraz, nola ez dinamikoki lortuko dugu memoria esleitu lehenik eta behin? 77 00:03:24,910 --> 00:03:27,740 Nola lortu du gure programa memoria, exekutatzen ari den bezala? 78 00:03:27,740 --> 00:03:32,660 Beno C izeneko funtzio bat ematen malloc, memoria allocator, bertan 79 00:03:32,660 --> 00:03:36,810 dei bat egin nahi duzun, eta pasatzen duzu zenbat memoria byte nahi duzun. 80 00:03:36,810 --> 00:03:39,940 Beraz, zure programa martxan badago eta zenbaki oso exekuzio bat nahi duzu, 81 00:03:39,940 --> 00:03:46,040 lau byte mallock dezakezun memoria, malloc parentesi lau. 82 00:03:46,040 --> 00:03:48,540 >> mallock joango bidez zeure bidez bila, 83 00:03:48,540 --> 00:03:50,750 dinamikoki garelako memoria esleitzean, 84 00:03:50,750 --> 00:03:53,500 eta izango duzu itzuliko da memoria hori erakuslea. 85 00:03:53,500 --> 00:03:56,180 Ez du ematen dizute memoria gordetzeko duten ez du eman izena, 86 00:03:56,180 --> 00:03:57,950 duzu, erakuslea bat ematen dio. 87 00:03:57,950 --> 00:04:00,780 Eta beraz, horregatik esan dut berriro garrantzitsua da, agian, 88 00:04:00,780 --> 00:04:03,770 erakusleak bideoa ikusi ditut Urrunegi lortuko dugu aurretik honetan sartu. 89 00:04:03,770 --> 00:04:05,940 Beraz malloc Honez joan ematen duzu atzera erakuslea. 90 00:04:05,940 --> 00:04:08,950 >> Mallock ezin bada eman duzu edozein you korrika dut delako memoria, 91 00:04:08,950 --> 00:04:10,645 Emango dizu egingo back null erakuslea. 92 00:04:10,645 --> 00:04:15,282 Gogoratzen al dugu bada, zer gertatzen saiatu eta null erakuslea dereference? 93 00:04:15,282 --> 00:04:17,019 Seg matxura bat jasaten dugu, ezta? 94 00:04:17,019 --> 00:04:18,060 Hori da, ziurrenik, ez da ona. 95 00:04:18,060 --> 00:04:21,579 >> Beraz, aldi bakoitzean dei bat egiten duzunean you malloc beti, beti 96 00:04:21,579 --> 00:04:25,270 egiaztatu behar diren ala ez erakuslea eman zion itzuli da zuk nulua. 97 00:04:25,270 --> 00:04:28,800 Bada, zure programa amaitu behar duzu saiatu baduzu eta dereference delako 98 00:04:28,800 --> 00:04:31,360 null erakuslea bazoazela segmentazio matxura bat pairatu behar 99 00:04:31,360 --> 00:04:34,380 eta zure programa da hala ere huts joan. 100 00:04:34,380 --> 00:04:37,190 Beraz, nola egiten dugu estatikoki zenbaki oso bat lortzeko? 101 00:04:37,190 --> 00:04:37,730 >> int x. 102 00:04:37,730 --> 00:04:40,010 Seguru asko dugu hori egin aldiz mordo bat, ezta? 103 00:04:40,010 --> 00:04:43,480 Hau izeneko aldagai bat sortzen du pila bizi da x. 104 00:04:43,480 --> 00:04:46,190 Zelan dinamikoki lortu dugu zenbaki oso bat? 105 00:04:46,190 --> 00:04:50,010 Int izar px malloc 4 berdin. 106 00:04:50,010 --> 00:04:53,050 >> Edo gehiago modu egokian int izar px esan genuen 107 00:04:53,050 --> 00:04:57,680 int tamaina malloc berdin, besterik batzuk gutxiago botatzen 108 00:04:57,680 --> 00:04:59,740 magia zenbakiak gure programa inguruan. 109 00:04:59,740 --> 00:05:04,140 Hau da guretzat lortzeko joan lau memoria byte zeure hasita, 110 00:05:04,140 --> 00:05:06,720 eta erakuslea lortuko dugu atzera px deritzo. 111 00:05:06,720 --> 00:05:08,430 Eta gero dugu bezalaxe Aurretik egin dugu 112 00:05:08,430 --> 00:05:13,966 Ahal px dereference memoria hori eskuratu. 113 00:05:13,966 --> 00:05:15,590 Zelan erabiltzaileari zenbaki bat lortuko dugu? 114 00:05:15,590 --> 00:05:17,970 Esan int x berdinen lortu int izango dugu. 115 00:05:17,970 --> 00:05:19,930 Hori nahiko erraza. 116 00:05:19,930 --> 00:05:24,030 Zer array bat sortu nahi badugu x pila gainean bizi diren karroza? 117 00:05:24,030 --> 00:05:28,210 flotatzen stack_array-- duen izena da gure array karratu parentesi x. 118 00:05:28,210 --> 00:05:32,419 Hori izango da gurekin array bat sortzea x pila gainean bizi diren karroza. 119 00:05:32,419 --> 00:05:34,960 Karroza array bat sortu ahal izango dugu Hori zeure gainean bizi da, gehiegi. 120 00:05:34,960 --> 00:05:37,330 Sintaxia bat begiratu dezake gutxi gehiago astuna, 121 00:05:37,330 --> 00:05:41,740 baina karroza esan dezakegu Izar heap_array berdinen 122 00:05:41,740 --> 00:05:44,360 malloc x aldiz karroza tamaina. 123 00:05:44,360 --> 00:05:48,160 Gela nahikoa behar dut eutsi x koma mugikorreko balio. 124 00:05:48,160 --> 00:05:51,560 Beraz, esan behar dut 100 karroza, edo 1.000 karroza. 125 00:05:51,560 --> 00:05:54,810 Beraz, kasu horretan izango litzateke 400 byte 100 karroza, 126 00:05:54,810 --> 00:05:59,080 edo 4.000 byte 1.000 karroza, karroza bakoitzak hartzen delako 127 00:05:59,080 --> 00:06:01,230 lau espazio byte. 128 00:06:01,230 --> 00:06:05,110 >> Hau egin ondoren erabili ahal izango dut kortxetea heap_array sintaxia. 129 00:06:05,110 --> 00:06:08,970 Besterik ez litzateke stack_array on dudan bezala, I bere elementuak banaka sartu ahal izango da 130 00:06:08,970 --> 00:06:11,590 heap_array erabiliz zero, bat heap_array. 131 00:06:11,590 --> 00:06:15,800 Baina gogoratzen arrazoia egin ahal izango dugu, delako C array baten izena 132 00:06:15,800 --> 00:06:19,990 benetan erakuslea Array horretan lehenengo elementua. 133 00:06:19,990 --> 00:06:23,480 Izan ere, ez dugula bat deklaratzen ari karroza sorta pila hemen 134 00:06:23,480 --> 00:06:24,810 benetan pixka bat engainagarria. 135 00:06:24,810 --> 00:06:27,600 Benetan ere gaude kodea bigarren dago 136 00:06:27,600 --> 00:06:32,360 halaber erakuslea sortzeko pusketa bat memoria hori, gero lan batzuk egin ditugu. 137 00:06:32,360 --> 00:06:35,620 >> Hona hemen arazo handi du dinamikoki memoria esleitu arren, 138 00:06:35,620 --> 00:06:38,360 eta hau da, zergatik da benetan Garrantzitsua ohitura onak batzuk garatzeko 139 00:06:38,360 --> 00:06:39,800 denean berarekin lanean ari. 140 00:06:39,800 --> 00:06:43,060 Estatikoki deklaratu bezala memoria, zure memoria 141 00:06:43,060 --> 00:06:46,790 ez da automatikoki itzuli sistema denean zure funtzioa egiten da. 142 00:06:46,790 --> 00:06:49,280 Beraz nagusia dugu, eta bada funtzio nagusia deitzen 143 00:06:49,280 --> 00:06:53,860 f, f akaberak egiten ari denean dena delakoa eta programaren kontrola itzultzen 144 00:06:53,860 --> 00:06:58,810 memoriaren nagusia, atzera guztiak f Erabiltzen atzera ematen da. 145 00:06:58,810 --> 00:07:01,250 Berriro erabili ahal izateko beste programa batzuek, 146 00:07:01,250 --> 00:07:04,250 edo beste funtzio batzuk lortzen geroago izeneko nagusian. 147 00:07:04,250 --> 00:07:06,970 Memoria hori bera gehiagoko berriz erabili ahal izango da. 148 00:07:06,970 --> 00:07:09,620 >> Baduzu dinamikoki esleitu memoria arren 149 00:07:09,620 --> 00:07:14,380 Esplizituki esango duzu Berarekin duzula Bukatutakoan sistema. 150 00:07:14,380 --> 00:07:18,370 Aldera egingo da mantendu behar da, eta horrek Could Arazo bat ekarriko agortzen duzu 151 00:07:18,370 --> 00:07:19,290 oroimenaren. 152 00:07:19,290 --> 00:07:22,179 Eta hain zuzen ere, batzuetan, erreferentzia dugu honetarako memoria leak gisa. 153 00:07:22,179 --> 00:07:24,970 Eta memoria filtrazioen horien batzuetan benetan izan daiteke benetan suntsitzaileak 154 00:07:24,970 --> 00:07:27,020 sistema jokabideagatik. 155 00:07:27,020 --> 00:07:31,120 >> Internetera erabiltzaile maiz uzten badu Web nabigatzaile zenbait erabil dezakezu, 156 00:07:31,120 --> 00:07:35,630 eta ez dut izendatzeko izen hemen, baina Web nabigatzaile batzuk daude hor kanpoan 157 00:07:35,630 --> 00:07:39,150 hori benetan izatea nabaria memoria filtrazioak ez get finkoa. 158 00:07:39,150 --> 00:07:44,570 Eta zure nabigatzailean irekita uzten baduzu denbora oso luzez, egun 159 00:07:44,570 --> 00:07:48,060 eta egun, edo aste, batzuetan baliteke zure sistema hori nabarituko 160 00:07:48,060 --> 00:07:49,790 benetan korrika, benetan poliki da. 161 00:07:49,790 --> 00:07:54,640 Eta horren arrazoia dela nabigatzailea memoria esleitu ditu, 162 00:07:54,640 --> 00:07:57,320 baina orduan ez sistemako esan Dela kito. 163 00:07:57,320 --> 00:08:01,000 Eta beraz, memoria gutxiago uzten Zure beste programa guztiak eskuragarri 164 00:08:01,000 --> 00:08:04,480 partekatzeko dute, Oraindik delako leaking-- web nabigatzaileak 165 00:08:04,480 --> 00:08:06,755 programaren memoria leaking. 166 00:08:06,755 --> 00:08:08,880 Zelan memoria emango dugu atzera Bukatutakoan dugu? 167 00:08:08,880 --> 00:08:10,838 Beno zorionez da egiteko modu oso erraza. 168 00:08:10,838 --> 00:08:11,710 Besterik askatzea dela da. 169 00:08:11,710 --> 00:08:15,020 Badira free izeneko funtzio bat da, erakuslea onartu egiten oroimenerako, 170 00:08:15,020 --> 00:08:16,010 eta onak joan gara. 171 00:08:16,010 --> 00:08:18,310 >> Hargatik esaten ari ginen batean Gure programa erdian, 172 00:08:18,310 --> 00:08:21,970 50 karaktere malloc nahi dugu. 173 00:08:21,970 --> 00:08:25,710 Ahal matrize malloc nahi dugu 50 karaktere eskuratzeko gai. 174 00:08:25,710 --> 00:08:29,109 Eta noiz erakuslea lortuko dugu atzera hori, erakuslea izenaren hitza da. 175 00:08:29,109 --> 00:08:30,900 Ez dugu edozein dela ere gaude den hitzarekin lotutako joan, 176 00:08:30,900 --> 00:08:33,440 eta orduan, ez gara Egin askatu besterik ez dugu. 177 00:08:33,440 --> 00:08:37,460 Eta orain itzuli egin ditugun 50 horiek memoria byte sistema atzera. 178 00:08:37,460 --> 00:08:40,147 Beste funtzio batzuk erabili dezakegu. 179 00:08:40,147 --> 00:08:43,480 Guk ez dugu izan nahi bat jasaten kezkatu memoria leak hitza libratuko dugu delako. 180 00:08:43,480 --> 00:08:46,639 Memorian atzera eman ditugu, beraz ari gara egiten da lan egitea. 181 00:08:46,639 --> 00:08:48,430 Beraz, badira hiru urrezko arauak hori behar duten 182 00:08:48,430 --> 00:08:51,700 Kontuan izan bedi direnean Oraindik dinamikoki memoria esleitzean 183 00:08:51,700 --> 00:08:52,990 malloc. 184 00:08:52,990 --> 00:08:56,480 Memoria bloke bakoitza malloc libratuko behar duzu 185 00:08:56,480 --> 00:08:58,430 Zure programa aurretik korrika bukatuz. 186 00:08:58,430 --> 00:09:02,029 Orain, berriz ere, aparatuaren edo hasi IDE hau moduko zuretzat gertatzen dena den 187 00:09:02,029 --> 00:09:04,820 denean zu hau hala gertatuko da Programa amaitzean, 188 00:09:04,820 --> 00:09:06,880 memorian guztiak kaleratu egingo. 189 00:09:06,880 --> 00:09:10,750 Baina kodetze oro har, ona da beti praktikan, amaitu duzunean, 190 00:09:10,750 --> 00:09:13,810 zer mallocd duzu libratzeko. 191 00:09:13,810 --> 00:09:16,690 >> Esan, gauza bakarra dagoela duzun libratuko behar mallocd. 192 00:09:16,690 --> 00:09:19,880 You estatikoki deklaratzeko bat izanez gero, osokoa, int x puntu, 193 00:09:19,880 --> 00:09:23,500 pila bizi da, zuk Ez gero x askatu nahi. 194 00:09:23,500 --> 00:09:25,970 Zaituzte duten gauza bakarra, beraz, mallocd libre utziko luke. 195 00:09:25,970 --> 00:09:28,960 >> Eta, azkenik, egiten ez den zerbait doan birritan. 196 00:09:28,960 --> 00:09:31,170 Hori ekar dezake beste egoera bitxi. 197 00:09:31,170 --> 00:09:33,530 Beraz, dena zuk amesten mallocd libre utziko ditu. 198 00:09:33,530 --> 00:09:36,000 Zaituzte duten gauza bakarra malloc libre utziko luke. 199 00:09:36,000 --> 00:09:38,730 Eta ez zerbait doan birritan. 200 00:09:38,730 --> 00:09:43,660 >> Beraz, goazen adibide baten bidez hemen zer batzuk dinamikoki esleitu of 201 00:09:43,660 --> 00:09:46,122 memoria mistoa agian itxura memoria estatiko batzuk ere. 202 00:09:46,122 --> 00:09:47,080 Hemen zer gerta liteke? 203 00:09:47,080 --> 00:09:48,913 Ikusi jarraitu ahal bada batera eta asmatzen zer da 204 00:09:48,913 --> 00:09:51,720 goazela gertatuko Kode lerro hauen guztien bidez. 205 00:09:51,720 --> 00:09:53,980 >> Beraz, int m esaten dugu. 206 00:09:53,980 --> 00:09:54,840 Zer gertatzen da hemen? 207 00:09:54,840 --> 00:09:56,339 Beno, hau da, nahiko erraza. 208 00:09:56,339 --> 00:09:59,650 M izeneko Osoko aldagai bat sortu dut. 209 00:09:59,650 --> 00:10:01,400 Margotu dut berdea, kolorea delako 210 00:10:01,400 --> 00:10:03,730 hitz egiten ari naiz erabiltzen dudala zenbaki oso aldagai buruz. 211 00:10:03,730 --> 00:10:05,160 Kutxa bat da. 212 00:10:05,160 --> 00:10:08,400 Honez m deitzen, eta ahal duzun horren barruan zenbaki osoko denda. 213 00:10:08,400 --> 00:10:12,400 >> Zer dut eta gero esan int izar bat balitz? 214 00:10:12,400 --> 00:10:13,530 Beno, nahiko antzekoa da. 215 00:10:13,530 --> 00:10:15,780 Sortzen ari naiz izeneko koadro bat. 216 00:10:15,780 --> 00:10:19,100 Da holding int gai izarrak, osokoak erakusle. 217 00:10:19,100 --> 00:10:21,570 Beraz margotu dut berde-ish baita. 218 00:10:21,570 --> 00:10:24,140 >> Zerbait ditu ezagutzen dut zenbaki oso bat egin, 219 00:10:24,140 --> 00:10:25,852 baina ez bera da zenbaki osoa. 220 00:10:25,852 --> 00:10:27,310 Baina nahiko askoz ideia bera da. 221 00:10:27,310 --> 00:10:28,101 Kutxa bat sortu dut. 222 00:10:28,101 --> 00:10:30,070 Eskubidea horiek biak orain pila bizi. 223 00:10:30,070 --> 00:10:32,520 Eman dut horietako bi izenak. 224 00:10:32,520 --> 00:10:36,750 >> int izar b berdinen int tamaina malloc. 225 00:10:36,750 --> 00:10:38,560 Honek apur bat zaila izan liteke. 226 00:10:38,560 --> 00:10:44,110 Hartu segundo bat eta zer duzu pentsatu diagrama hau gertatuko espero. 227 00:10:44,110 --> 00:10:50,210 int izar b berdinen int tamaina malloc. 228 00:10:50,210 --> 00:10:51,940 >> Beno, honek ez du besterik sortu kutxa bat. 229 00:10:51,940 --> 00:10:53,800 Hau benetan bi kaxa sortzen. 230 00:10:53,800 --> 00:10:58,670 Eta lotzen ditu, ezartzen du, gainera, Harreman batean puntu bat. 231 00:10:58,670 --> 00:11:02,240 Bloke bat esleitu dugu memoria zeure gainean. 232 00:11:02,240 --> 00:11:05,940 Iragarki goiko eskuineko koadroan dagoela Han ez du izenik. 233 00:11:05,940 --> 00:11:06,760 >> Egiten mallocd dugu. 234 00:11:06,760 --> 00:11:08,050 Zeure gainean existitzen da. 235 00:11:08,050 --> 00:11:10,090 Baina b izen bat dauka. 236 00:11:10,090 --> 00:11:11,950 B erakuslea izeneko aldagai bat da. 237 00:11:11,950 --> 00:11:13,910 Pila bizi da. 238 00:11:13,910 --> 00:11:18,250 >> Beraz, memoria zati bat da hori beste bat darama. 239 00:11:18,250 --> 00:11:21,840 b helbidea dauka memoria bloke horren. 240 00:11:21,840 --> 00:11:23,757 Ez du izen bat izan bestela. 241 00:11:23,757 --> 00:11:24,590 Baina puntu bezala agertzen da. 242 00:11:24,590 --> 00:11:29,760 Beraz, esan dugun int izar b berdinen malloc int tamaina, eskubidea ez dagoela, 243 00:11:29,760 --> 00:11:33,490 gezi hori idatz sortu du: Eskuinaldean dago, oro har, gauza hori, 244 00:11:33,490 --> 00:11:36,740 Izan dut da agertzen berriro, da zer gertatzen den. 245 00:11:36,740 --> 00:11:39,341 Hori guztia gertatzen da kode lerro bakar horretan. 246 00:11:39,341 --> 00:11:41,340 Orain gutxi gehiago lortuko dugu erraza berriro. 247 00:11:41,340 --> 00:11:43,330 a ampersand m berdin. 248 00:11:43,330 --> 00:11:46,280 Ez zer gogoratzen duzu berdinen ampersand m da? 249 00:11:46,280 --> 00:11:48,920 Beno, hori da bat m en helbide lortzen. 250 00:11:48,920 --> 00:11:54,150 Edo jarri gehiago diagrammatically, m puntu bat. 251 00:11:54,150 --> 00:11:56,360 >> a berdinen b. 252 00:11:56,360 --> 00:11:57,560 Ados, beraz, hemen beste bat da. 253 00:11:57,560 --> 00:11:59,230 A berdinen b. 254 00:11:59,230 --> 00:12:02,260 Zer gertatuko Diagraman denbora hau? 255 00:12:02,260 --> 00:12:04,330 >> Beno, gogora ekarri du duela esleitzeko operadorea lanak 256 00:12:04,330 --> 00:12:08,960 balioa esleitu eskuinetik ezkerrera on balioa. 257 00:12:08,960 --> 00:12:14,820 Beraz ordez m seinalatuz a, orain bat b puntuak leku berean darama. 258 00:12:14,820 --> 00:12:18,900 batek ez b puntura, a non b puntuak seinalatzen. 259 00:12:18,900 --> 00:12:25,280 >> B adierazi bat izanez gero, izan dira bat ampersand b berdin. 260 00:12:25,280 --> 00:12:28,150 Baina horren ordez berdin besterik b esan nahi du, eta b orain 261 00:12:28,150 --> 00:12:31,770 helbide bera seinalatzen duelako b barrutik besterik helbidea da. 262 00:12:31,770 --> 00:12:35,004 Eta orain, bat-barrutik helbide bera da. 263 00:12:35,004 --> 00:12:37,170 m berdinen 10, ziurrenik zuzenean gauzarik 264 00:12:37,170 --> 00:12:38,690 Pixka bat ere egin dugu. 265 00:12:38,690 --> 00:12:40,460 Jarri 10eko koadroan. 266 00:12:40,460 --> 00:12:45,640 Star b berdinen m plus 2, gogoratzen gure erakusle bideo zer izar b esan nahi du. 267 00:12:45,640 --> 00:12:50,230 Ari gara dereference b eta jarri nahi dut Memoriaren balio batzuk. 268 00:12:50,230 --> 00:12:51,860 Kasu honetan 12 urtean. 269 00:12:51,860 --> 00:12:55,300 >> Beraz, noiz dugun puntu bat erreferentzia kenduta Gogoratzen bidaiatzeko besterik behera dugu gezi. 270 00:12:55,300 --> 00:12:58,205 Edo bestela esanda, ez dugu memoria helbide horretara joan 271 00:12:58,205 --> 00:12:59,580 eta manipulatu dugu nolabait. 272 00:12:59,580 --> 00:13:00,830 Balio batzuk jarri ditugu han. 273 00:13:00,830 --> 00:13:03,960 Kasu honetan izar b m berdinen plus 2 besterik ez da 274 00:13:03,960 --> 00:13:08,230 aldakorreko joateko adierazi by b, memoria joateko adierazi by b, 275 00:13:08,230 --> 00:13:11,750 eta jarri m plus 2 han ere, 12. 276 00:13:11,750 --> 00:13:14,970 >> Orain b askatu nuen. 277 00:13:14,970 --> 00:13:16,490 Zer gertatzen da I denean b askatzea? 278 00:13:16,490 --> 00:13:18,800 Gogoratu zer esan free esan nuen. 279 00:13:18,800 --> 00:13:21,920 Zer ari naiz I denean b askatzea esaten? 280 00:13:21,920 --> 00:13:23,410 >> Naiz egiten da lan egitea, ezta? 281 00:13:23,410 --> 00:13:25,702 Funtsean uzten ditut memorian. 282 00:13:25,702 --> 00:13:26,910 Ematen dut back sistema. 283 00:13:26,910 --> 00:13:33,010 Ez dut behar hau jada zer horiek kontatzen dut, OK? 284 00:13:33,010 --> 00:13:37,390 >> Orain esan badut izar bat berdinen 11 seguruenik dezakezu 285 00:13:37,390 --> 00:13:40,460 Dagoeneko zerbait txarra dela esango hemen gertatuko da, ezta va? 286 00:13:40,460 --> 00:13:44,160 Eta seguruenik dut saiatu naiz, egia baldin bada segmentazio errua jasango luke. 287 00:13:44,160 --> 00:13:47,140 Orain delako, nahiz eta Aurretik zatia memoria hori 288 00:13:47,140 --> 00:13:50,220 zerbait zela izan nuen sartzeko, puntu honetan 289 00:13:50,220 --> 00:13:54,590 orain memoria dut sartzean duten Ez da lege for me to sartzeko. 290 00:13:54,590 --> 00:13:57,330 >> Eta seguruenik izango dugu Gogoratzen denean, memoria sartzeko dugu 291 00:13:57,330 --> 00:14:00,000 ari garela, ez ustezko ukitu, hori kausa ohikoena da 292 00:14:00,000 --> 00:14:01,860 segmentazio bat hutsegite. Eta orain nire programa 293 00:14:01,860 --> 00:14:05,170 kraska litzateke hau egin nahi izan banu. 294 00:14:05,170 --> 00:14:09,910 Beraz, berriro ere, ideia ona da ona lortu da praktika onak eta ohiturak errotuta 295 00:14:09,910 --> 00:14:12,920 malloc eta doan lan egiten denean, beraz, ez duzula segmentazio sufritzen 296 00:14:12,920 --> 00:14:15,310 matxurak erabili, eta zuk Zure dinamikoki esleitu 297 00:14:15,310 --> 00:14:17,370 memoria arduraz. 298 00:14:17,370 --> 00:14:20,300 >> Naiz Doug Lloyd hau CS50 da. 299 00:14:20,300 --> 00:14:21,947