1 00:00:00,000 --> 00:00:00,499 2 00:00:00,499 --> 00:00:01,395 [Music kucheza] 3 00:00:01,395 --> 00:00:05,590 4 00:00:05,590 --> 00:00:07,940 >> DOUG LLOYD: OK hivyo pendekezo kabla ya kuanza hapa. 5 00:00:07,940 --> 00:00:11,660 Kama si watched video juu ya kuyatumia unaweza kutaka kufanya hivyo kwanza. 6 00:00:11,660 --> 00:00:15,860 Kwa sababu video hii ni mwingine njia ya kufanya kazi na kuyatumia. 7 00:00:15,860 --> 00:00:17,574 >> Hivyo ni kwenda kuzungumza kuhusu baadhi ya dhana 8 00:00:17,574 --> 00:00:19,490 kwamba sisi cover katika kuyatumia video, na tuko 9 00:00:19,490 --> 00:00:21,948 kwenda Gloss juu yao sasa, kuchukua kwamba wao uko tayari 10 00:00:21,948 --> 00:00:23,090 aina ya kueleweka. 11 00:00:23,090 --> 00:00:25,440 Hivyo hiyo ni onyo tu yako ya haki kwamba kama wewe ni kuona video hii 12 00:00:25,440 --> 00:00:27,814 na hawajaona kuyatumia video, inaweza aina ya 13 00:00:27,814 --> 00:00:29,610 kuruka juu ya kichwa yako kidogo. 14 00:00:29,610 --> 00:00:32,080 Na hivyo inaweza kuwa bora kuangalia ni ili. 15 00:00:32,080 --> 00:00:34,710 >> Hivyo tumeona moja njia ya kufanya kazi na kuyatumia, 16 00:00:34,710 --> 00:00:37,810 ambayo ni sisi kutangaza kutofautiana, na kisha sisi 17 00:00:37,810 --> 00:00:42,160 kutangaza mwingine kutofautiana, pointer kutofautiana, kwamba pointi kwa hilo. 18 00:00:42,160 --> 00:00:44,870 Hivyo tumeunda kutofautiana kwa jina, tumekuwa 19 00:00:44,870 --> 00:00:48,480 umba kutofautiana pili kwa jina, na sisi uhakika kwamba kutofautiana pili 20 00:00:48,480 --> 00:00:50,220 wakati huo wa kwanza. 21 00:00:50,220 --> 00:00:52,370 Hii ina aina ya Tatizo ingawa, kwa sababu 22 00:00:52,370 --> 00:00:54,650 inahitaji sisi kujua hasa ni kiasi gani kumbukumbu tuko 23 00:00:54,650 --> 00:00:57,600 kwenda haja sasa mpango wetu ni ulioandaliwa. 24 00:00:57,600 --> 00:00:58,220 >> Kwanini hivyo? 25 00:00:58,220 --> 00:01:03,338 Kwa sababu tunahitaji kuwa na uwezo wa kutaja au kutambua yote ya vigezo iwezekanavyo 26 00:01:03,338 --> 00:01:04,129 sisi kukutana. 27 00:01:04,129 --> 00:01:07,910 Tupate kuwa na safu hiyo inaweza kuwa ni uwezo wa kushikilia mengi ya habari, 28 00:01:07,910 --> 00:01:10,110 lakini bado si hasa sahihi kutosha. 29 00:01:10,110 --> 00:01:12,640 Nini kama hatujui, nini kama hatuna wazo 30 00:01:12,640 --> 00:01:14,370 kiasi gani tutaweza haja wakati kukusanya? 31 00:01:14,370 --> 00:01:17,020 Au nini kama mpango wetu mapenzi kukimbia kwa kweli kwa muda mrefu, 32 00:01:17,020 --> 00:01:19,810 kukubali mtumiaji mbalimbali data, na hatuwezi kwa kweli 33 00:01:19,810 --> 00:01:23,170 makisio kama tuko kwenda haja vitengo 1,000? 34 00:01:23,170 --> 00:01:26,060 >> Siyo kama tunaweza kusema katika mstari amri 35 00:01:26,060 --> 00:01:28,040 kuingia vitu ngapi unafikiri itabidi. 36 00:01:28,040 --> 00:01:31,100 Naam nini kama kwamba nadhani ni sahihi? 37 00:01:31,100 --> 00:01:34,300 Mgao wa nguvu kumbukumbu aina ya inaruhusu sisi njia 38 00:01:34,300 --> 00:01:36,867 kupata kote na tatizo hili fulani. 39 00:01:36,867 --> 00:01:38,700 Na njia ni gani ni kwa kutumia kuyatumia. 40 00:01:38,700 --> 00:01:42,140 >> Tunaweza kutumia kuyatumia kwa kupata dynamically 41 00:01:42,140 --> 00:01:45,710 zilizotengwa kumbukumbu, kumbukumbu kwamba ni zilizotengwa kama mpango wako ni mbio. 42 00:01:45,710 --> 00:01:48,290 Siyo zilizotengwa wakati kukusanya. 43 00:01:48,290 --> 00:01:51,570 Wakati dynamically kutenga kumbukumbu inatoka pool 44 00:01:51,570 --> 00:01:53,795 ya kumbukumbu inayojulikana kama chungu. 45 00:01:53,795 --> 00:01:56,420 Hapo awali zote kumbukumbu tumekuwa ikifanya kazi na katika kozi 46 00:01:56,420 --> 00:01:59,920 imekuwa kuja kutoka bwawa ya kumbukumbu inayojulikana kama stack. 47 00:01:59,920 --> 00:02:02,470 Njia nzuri ya ujumla kuweka katika utawala mind-- na hii 48 00:02:02,470 --> 00:02:04,720 daima haina kushikilia kweli, lakini pretty much karibu 49 00:02:04,720 --> 00:02:09,940 daima ana true-- ni kwamba yoyote wakati unaweza kumpa jina kutofautiana ni 50 00:02:09,940 --> 00:02:12,090 pengine anaishi juu ya stack. 51 00:02:12,090 --> 00:02:14,650 Na wakati wowote huna kutoa kutofautiana jina, 52 00:02:14,650 --> 00:02:19,160 ambayo unaweza kufanya na kumbukumbu ya nguvu mgao, ni anaishi kwenye lundo. 53 00:02:19,160 --> 00:02:22,190 >> Sasa mimi nina aina ya kuwasilisha hii kama kama kuna mabwawa haya mawili ya kumbukumbu. 54 00:02:22,190 --> 00:02:24,740 Lakini unaweza tumeona hii mchoro, ambayo kwa ujumla ni 55 00:02:24,740 --> 00:02:27,290 uwakilishi wa nini kumbukumbu inaonekana kama, 56 00:02:27,290 --> 00:02:30,373 na sisi siyo kwenda kwa huduma ya juu zote mambo kwa juu na chini. 57 00:02:30,373 --> 00:02:33,580 Nini sisi huduma ya juu ni sehemu huu katika katikati hapa, chungu na stack. 58 00:02:33,580 --> 00:02:35,570 Kama unaweza kuona na kuangalia mchoro huu, 59 00:02:35,570 --> 00:02:38,390 hizi kweli si wawili mabwawa tofauti ya kumbukumbu. 60 00:02:38,390 --> 00:02:42,757 Ni moja ya pamoja bwawa la kumbukumbu ambapo kuanza, katika hii Visual 61 00:02:42,757 --> 00:02:44,590 kuanza chini na kuanza kujaza juu 62 00:02:44,590 --> 00:02:48,040 kuanzia chini kwa stack, na wewe kuanza juu na kuanza kujaza juu 63 00:02:48,040 --> 00:02:50,072 kutoka juu kwenda chini na lundo. 64 00:02:50,072 --> 00:02:51,780 Lakini kwa kweli ni sawa pool, ni tu 65 00:02:51,780 --> 00:02:56,050 matangazo mbalimbali, maeneo mbalimbali katika kumbukumbu kuwa ni kuwa zilizotengwa. 66 00:02:56,050 --> 00:02:59,060 Na unaweza kukimbia nje ya kumbukumbu kwa aidha kuwa 67 00:02:59,060 --> 00:03:01,240 lundo kwenda njia yote hadi chini, au kuwa na 68 00:03:01,240 --> 00:03:05,440 stack kwenda njia yote ya juu, au kuwa na lundo na stack 69 00:03:05,440 --> 00:03:06,740 kukutana dhidi ya kila mmoja. 70 00:03:06,740 --> 00:03:09,500 Wote wa wale inaweza kuwa masharti vinavyosababisha mpango wako 71 00:03:09,500 --> 00:03:11,030 kukimbia nje ya kumbukumbu. 72 00:03:11,030 --> 00:03:11,952 Hivyo kuendelea kuwa katika akili. 73 00:03:11,952 --> 00:03:13,660 Tunapozungumzia kuhusu lundo na stack 74 00:03:13,660 --> 00:03:17,880 sisi ni kweli kuzungumza juu ya sawa mkuu chunk ya kumbukumbu, tu 75 00:03:17,880 --> 00:03:21,930 sehemu mbalimbali za kumbukumbu hiyo. 76 00:03:21,930 --> 00:03:24,910 >> Hivyo ni jinsi gani sisi kupata dynamically kumbukumbu zilizotengwa katika nafasi ya kwanza? 77 00:03:24,910 --> 00:03:27,740 Ni kwa jinsi gani mpango wetu kupata kumbukumbu kama ni mbio? 78 00:03:27,740 --> 00:03:32,660 Naam C hutoa kazi kuitwa malloc, kumbukumbu allocator, ambayo 79 00:03:32,660 --> 00:03:36,810 wewe kufanya wito kwa, na wewe kupita katika jinsi ka ya kumbukumbu kwamba unataka mingi. 80 00:03:36,810 --> 00:03:39,940 Hivyo kama mpango wako ni mbio na unataka integer Runtime, 81 00:03:39,940 --> 00:03:46,040 unaweza mallock ka nne ya , malloc kumbukumbu mabano nne. 82 00:03:46,040 --> 00:03:48,540 >> mallock watapitia kutafuta njia chungu, 83 00:03:48,540 --> 00:03:50,750 kwa sababu tuko dynamically kugawa kumbukumbu, 84 00:03:50,750 --> 00:03:53,500 na itakuwa kurudi wewe pointer kwamba kumbukumbu. 85 00:03:53,500 --> 00:03:56,180 Haina kukupa kwamba memory-- haina kuwapa jina, 86 00:03:56,180 --> 00:03:57,950 inakupa pointer yake. 87 00:03:57,950 --> 00:04:00,780 Na hivyo ndiyo sababu tena nikasema kuwa ni muhimu labda 88 00:04:00,780 --> 00:04:03,770 waliangalia kuyatumia video kabla ya sisi kupata mbali mno katika hili. 89 00:04:03,770 --> 00:04:05,940 Hivyo malloc kinaendelea kukupa nyuma pointer. 90 00:04:05,940 --> 00:04:08,950 >> Kama mallock hawezi kukupa yoyote kumbukumbu kwa sababu umefanya kukimbia nje, 91 00:04:08,950 --> 00:04:10,645 kutakuwa na kukupa nyuma pointer null. 92 00:04:10,645 --> 00:04:15,282 Je, unakumbuka kile kinachotokea kama sisi kujaribu dereference na pointer null? 93 00:04:15,282 --> 00:04:17,019 Sisi kuteseka seg kosa, sawa? 94 00:04:17,019 --> 00:04:18,060 Kwamba pengine si mzuri. 95 00:04:18,060 --> 00:04:21,579 >> Hivyo kila wakati kufanya wito malloc wewe daima, daima 96 00:04:21,579 --> 00:04:25,270 haja ya kuangalia kama au pointer lilitoa wewe nyuma ni null. 97 00:04:25,270 --> 00:04:28,800 Kama ni, unahitaji kumaliza mpango wako kwa sababu kama wewe kujaribu dereference na 98 00:04:28,800 --> 00:04:31,360 pointer null wewe ni kwenda kuteseka segmentation kosa 99 00:04:31,360 --> 00:04:34,380 na mpango wako ni kwenda kwa ajali anyway. 100 00:04:34,380 --> 00:04:37,190 Hivyo ni jinsi gani sisi statically kupata integer? 101 00:04:37,190 --> 00:04:37,730 >> int x. 102 00:04:37,730 --> 00:04:40,010 Tumekuwa pengine amefanya hivyo rundo la nyakati, sawa? 103 00:04:40,010 --> 00:04:43,480 Hii inajenga kutofautiana kuitwa x kwamba anaishi juu ya stack. 104 00:04:43,480 --> 00:04:46,190 Je, sisi dynamically kupata integer? 105 00:04:46,190 --> 00:04:50,010 Int nyota px sawa na malloc 4. 106 00:04:50,010 --> 00:04:53,050 >> Au zaidi ipasavyo tunatarajia kusema int nyota px 107 00:04:53,050 --> 00:04:57,680 sawa malloc ukubwa wa int, tu kutupa baadhi wachache 108 00:04:57,680 --> 00:04:59,740 idadi uchawi kuzunguka mpango wetu. 109 00:04:59,740 --> 00:05:04,140 Hii ni kwenda kupata kwa ajili yetu ka nne ya kumbukumbu kutoka lundo, 110 00:05:04,140 --> 00:05:06,720 na pointer tunapata nyuma ni kuitwa px. 111 00:05:06,720 --> 00:05:08,430 Na kisha tu kama tumekuwa tokea hapo sisi 112 00:05:08,430 --> 00:05:13,966 Unaweza dereference px kwa kupata kwamba kumbukumbu. 113 00:05:13,966 --> 00:05:15,590 Jinsi gani sisi kupata integer kutoka kwa mtumiaji? 114 00:05:15,590 --> 00:05:17,970 Tunaweza kusema int x sawa kupata int. 115 00:05:17,970 --> 00:05:19,930 Hiyo ni pretty moja kwa moja. 116 00:05:19,930 --> 00:05:24,030 Nini kama tunataka kujenga safu ya x ikifungwa kwamba kuishi katika stack? 117 00:05:24,030 --> 00:05:28,210 kuelea stack_array-- hiyo ni jina ya yetu array-- mabano mraba x. 118 00:05:28,210 --> 00:05:32,419 Ambayo kujenga kwa ajili yetu safu ya x ikifungwa wanaoishi juu ya stack. 119 00:05:32,419 --> 00:05:34,960 Tunaweza kujenga safu ya ikifungwa kwamba anaishi juu ya lundo, pia. 120 00:05:34,960 --> 00:05:37,330 Syntax ili kuangalia zaidi kidogo mbaya, 121 00:05:37,330 --> 00:05:41,740 lakini tunaweza kusema kuelea nyota heap_array sawa na 122 00:05:41,740 --> 00:05:44,360 malloc x mara ukubwa wa kuelea. 123 00:05:44,360 --> 00:05:48,160 Nahitaji nafasi ya kutosha kushikilia x yaliyo maadili uhakika. 124 00:05:48,160 --> 00:05:51,560 Hivyo kusema nahitaji 100 ikifungwa, au ikifungwa 1,000. 125 00:05:51,560 --> 00:05:54,810 Hivyo katika kesi kwamba itakuwa 400 ka kwa 100 ikifungwa, 126 00:05:54,810 --> 00:05:59,080 au 4,000 ka kwa ikifungwa 1000, kwa sababu kila kuelea unachukua 127 00:05:59,080 --> 00:06:01,230 ka nne wa nafasi. 128 00:06:01,230 --> 00:06:05,110 >> Baada ya kufanya hivyo naweza kutumia Mabano ya mraba syntax juu ya heap_array. 129 00:06:05,110 --> 00:06:08,970 Kama tu napenda juu ya stack_array, mimi Unaweza kupata mambo yake binafsi 130 00:06:08,970 --> 00:06:11,590 kutumia heap_array sifuri, heap_array moja. 131 00:06:11,590 --> 00:06:15,800 Lakini kukumbuka sababu tunaweza kufanya hivyo ni kwa sababu jina la safu katika C 132 00:06:15,800 --> 00:06:19,990 ni kweli pointer kwamba safu ya kwanza kipengele. 133 00:06:19,990 --> 00:06:23,480 Hivyo ukweli kwamba sisi ni kutangaza safu ya ikifungwa juu ya stack hapa 134 00:06:23,480 --> 00:06:24,810 ni kweli kidogo kupotosha. 135 00:06:24,810 --> 00:06:27,600 Sisi kwa kweli ni katika mstari wa pili wa kanuni huko 136 00:06:27,600 --> 00:06:32,360 pia kujenga pointer chunk ya kumbukumbu kwamba sisi kisha kufanya baadhi ya kazi kwa. 137 00:06:32,360 --> 00:06:35,620 >> Hapa ni tatizo kubwa na dynamically zilizotengwa kumbukumbu ingawa, 138 00:06:35,620 --> 00:06:38,360 na hii ni kwa nini ni kweli muhimu kuendeleza baadhi tabia nzuri 139 00:06:38,360 --> 00:06:39,800 wakati wewe ni kazi kwa hayo. 140 00:06:39,800 --> 00:06:43,060 Tofauti na statically alitangaza kumbukumbu, kumbukumbu yako 141 00:06:43,060 --> 00:06:46,790 si moja kwa moja alirudi mfumo wakati kazi yako ni kosa. 142 00:06:46,790 --> 00:06:49,280 Hivyo kama tuna kuu, na kuu wito kazi 143 00:06:49,280 --> 00:06:53,860 f, f wakati finishes chochote ni kufanya na anarudi udhibiti wa mpango 144 00:06:53,860 --> 00:06:58,810 nyuma kuu, yote ya kumbukumbu kwamba f kutumika anapewa nyuma. 145 00:06:58,810 --> 00:07:01,250 Ni inaweza kutumika tena na baadhi ya mpango mengine, 146 00:07:01,250 --> 00:07:04,250 au baadhi ya kazi nyingine ambazo anapata kuitwa baadaye katika kuu. 147 00:07:04,250 --> 00:07:06,970 Inaweza kutumia kwamba kumbukumbu hiyo tena. 148 00:07:06,970 --> 00:07:09,620 >> Kama dynamically kutenga kumbukumbu ingawa 149 00:07:09,620 --> 00:07:14,380 una kupanga kuwaambia mfumo kuwa wewe ni kosa kwa hayo. 150 00:07:14,380 --> 00:07:18,370 Kutakuwa na kushikilia kwenye hiyo kwa ajili yenu, ambayo inaweza kusababisha tatizo la wewe unapita 151 00:07:18,370 --> 00:07:19,290 wa kumbukumbu. 152 00:07:19,290 --> 00:07:22,179 Na kwa kweli sisi wakati mwingine kutaja kwa hili kama kumbukumbu kuvuja. 153 00:07:22,179 --> 00:07:24,970 Na wakati mwingine uvujaji hizi kumbukumbu kweli anaweza kweli makubwa 154 00:07:24,970 --> 00:07:27,020 kwa mfumo wa utendaji. 155 00:07:27,020 --> 00:07:31,120 >> Kama wewe ni mara kwa mara biashara ya mtumiaji unaweza kutumia baadhi ya browsers mtandao, 156 00:07:31,120 --> 00:07:35,630 na mimi si jina majina hapa, lakini kuna baadhi ya browsers mtandao huko nje 157 00:07:35,630 --> 00:07:39,150 kuwa ni sifa mbaya kwa kweli kuwa uvujaji kumbukumbu ambazo si kupata fasta. 158 00:07:39,150 --> 00:07:44,570 Na kama wewe kuondoka browser yako wazi kwa kipindi cha muda mrefu sana, siku 159 00:07:44,570 --> 00:07:48,060 na siku, au wiki, wakati mwingine taarifa kwamba mfumo wako 160 00:07:48,060 --> 00:07:49,790 ni mbio kweli, kweli polepole. 161 00:07:49,790 --> 00:07:54,640 Na sababu ya kuwa ni kwamba kisakuzi imetenga kumbukumbu, 162 00:07:54,640 --> 00:07:57,320 lakini kisha si aliiambia mfumo kuwa ni kosa kwa hayo. 163 00:07:57,320 --> 00:08:01,000 Na hivyo kwamba majani chini ya kumbukumbu inapatikana kwa wote wa programu yako mengine 164 00:08:01,000 --> 00:08:04,480 kuwa na kushiriki, kwa sababu wewe ni leaking-- kwamba kivinjari 165 00:08:04,480 --> 00:08:06,755 mpango ni kinachovuja kumbukumbu. 166 00:08:06,755 --> 00:08:08,880 Je, sisi kutoa kumbukumbu nyuma wakati sisi ni kosa kwa hayo? 167 00:08:08,880 --> 00:08:10,838 Vizuri kwa bahati nzuri ni njia rahisi sana ya kufanya hivyo. 168 00:08:10,838 --> 00:08:11,710 Sisi tu bure hilo. 169 00:08:11,710 --> 00:08:15,020 Kuna kazi kuitwa bure, anapokea pointer kumbukumbu, 170 00:08:15,020 --> 00:08:16,010 na sisi ni vizuri kwenda. 171 00:08:16,010 --> 00:08:18,310 >> Basi hebu kusema tuko katika katikati ya mpango wetu, 172 00:08:18,310 --> 00:08:21,970 tunataka malloc wahusika 50. 173 00:08:21,970 --> 00:08:25,710 Tunataka malloc safu ambayo yanaweza uwezo wa kufanya wahusika 50. 174 00:08:25,710 --> 00:08:29,109 Na wakati tunapata pointer nyuma kwamba, jina kwamba pointer ni neno. 175 00:08:29,109 --> 00:08:30,900 Sisi kufanya lolote tuko kwenda kufanya na neno, 176 00:08:30,900 --> 00:08:33,440 na kisha wakati tuko amefanya sisi tu huru yake. 177 00:08:33,440 --> 00:08:37,460 Na sasa sisi wamerejea wale 50 ka ya kumbukumbu nyuma na mfumo. 178 00:08:37,460 --> 00:08:40,147 Baadhi ya kazi nyingine wanaweza kuzitumia. 179 00:08:40,147 --> 00:08:43,480 Hatuna wasiwasi kuhusu mateso kumbukumbu kuvuja kwa sababu tuna huru neno. 180 00:08:43,480 --> 00:08:46,639 Tumekuwa kupewa kumbukumbu nyuma, hivyo sisi ni kosa kufanya kazi kwa hayo. 181 00:08:46,639 --> 00:08:48,430 Hivyo kuna tatu sheria ya dhahabu kuwa lazima 182 00:08:48,430 --> 00:08:51,700 iwekwe akilini wakati wowote uko dynamically kugawa kumbukumbu 183 00:08:51,700 --> 00:08:52,990 kwa malloc. 184 00:08:52,990 --> 00:08:56,480 Kila block ya kumbukumbu kwamba wewe malloc ni lazima lifunguliwe 185 00:08:56,480 --> 00:08:58,430 kabla ya mpango wako alimaliza mbio. 186 00:08:58,430 --> 00:09:02,029 Sasa tena, katika appliance au katika IDE hii aina ya ikitokea kwa wewe anyway 187 00:09:02,029 --> 00:09:04,820 wakati you-- hii kutokea anyway wakati mpango wako ni terminated, 188 00:09:04,820 --> 00:09:06,880 kumbukumbu zote zitatolewa. 189 00:09:06,880 --> 00:09:10,750 Lakini ni nzuri kwa ujumla coding mazoezi kwa siku zote, wakati wewe ni kosa, 190 00:09:10,750 --> 00:09:13,810 bure yale mallocd. 191 00:09:13,810 --> 00:09:16,690 >> Alisema kwamba, mambo tu kwamba wameweza mallocd inapaswa kuwa huru. 192 00:09:16,690 --> 00:09:19,880 Kama statically kutangaza integer, int x nusu ya matumbo, 193 00:09:19,880 --> 00:09:23,500 kwamba anaishi juu ya stack, wewe si basi wanataka bure x. 194 00:09:23,500 --> 00:09:25,970 Mambo tu kwamba wameweza mallocd inapaswa kuwa huru. 195 00:09:25,970 --> 00:09:28,960 >> Na Mwisho, hawana bure kitu mara mbili. 196 00:09:28,960 --> 00:09:31,170 Ambayo inaweza kusababisha hali nyingine weird. 197 00:09:31,170 --> 00:09:33,530 Hivyo kila kitu ambacho umefanya mallocd ina kuwa huru. 198 00:09:33,530 --> 00:09:36,000 Mambo tu kwamba wameweza malloc inapaswa kuwa huru. 199 00:09:36,000 --> 00:09:38,730 Na hawana bure kitu mara mbili. 200 00:09:38,730 --> 00:09:43,660 >> Basi hebu kwenda kupitia mfano hapa kile baadhi dynamically zilizotengwa 201 00:09:43,660 --> 00:09:46,122 kumbukumbu ili kuangalia kama mchanganyiko na baadhi ya kumbukumbu tuli. 202 00:09:46,122 --> 00:09:47,080 Nini kinaweza kutokea hapa? 203 00:09:47,080 --> 00:09:48,913 Kuona kama unaweza kufuata pamoja na nadhani nini 204 00:09:48,913 --> 00:09:51,720 kinaenda kutokea kama sisi kwenda kupitia mistari haya yote ya kificho. 205 00:09:51,720 --> 00:09:53,980 >> Hivyo tunasema int m. 206 00:09:53,980 --> 00:09:54,840 Nini kinatokea hapa? 207 00:09:54,840 --> 00:09:56,339 Naam hii ni pretty moja kwa moja. 208 00:09:56,339 --> 00:09:59,650 Mimi kuunda integer variable kuitwa m. 209 00:09:59,650 --> 00:10:01,400 Mimi rangi yake ya kijani, kwa sababu hiyo ni rangi 210 00:10:01,400 --> 00:10:03,730 kwamba mimi kutumia wakati mimi kuzungumza kuhusu integer vigezo. 211 00:10:03,730 --> 00:10:05,160 Ni eneo la hatari. 212 00:10:05,160 --> 00:10:08,400 Ni wito m, na unaweza kuhifadhi integers ndani yake. 213 00:10:08,400 --> 00:10:12,400 >> Nini kama mimi kisha kusema int nyota? 214 00:10:12,400 --> 00:10:13,530 Vizuri kwamba ni pretty sawa. 215 00:10:13,530 --> 00:10:15,780 Mimi kujenga sanduku aitwaye. 216 00:10:15,780 --> 00:10:19,100 Ni uwezo wa kufanya int nyota, kuyatumia kwa integers. 217 00:10:19,100 --> 00:10:21,570 Hivyo mimi nina kuipaka rangi ya kijani-ish pia. 218 00:10:21,570 --> 00:10:24,140 >> Najua ina kitu cha kufanya na integer, 219 00:10:24,140 --> 00:10:25,852 lakini siyo yenyewe integer. 220 00:10:25,852 --> 00:10:27,310 Lakini wazo moja kiasi pretty. 221 00:10:27,310 --> 00:10:28,101 Nimekuwa kuundwa eneo la hatari. 222 00:10:28,101 --> 00:10:30,070 Wote hawa haki sasa wanaishi juu ya stack. 223 00:10:30,070 --> 00:10:32,520 Nimekuwa amewapa majina yote mawili. 224 00:10:32,520 --> 00:10:36,750 >> int nyota b sawa na malloc ukubwa wa int. 225 00:10:36,750 --> 00:10:38,560 Hii moja inaweza kuwa ni kidogo suala gumu. 226 00:10:38,560 --> 00:10:44,110 Kuchukua pili na kufikiri juu ya nini bila kutarajia kutokea kwenye mchoro huu. 227 00:10:44,110 --> 00:10:50,210 int nyota b sawa na malloc ukubwa wa int. 228 00:10:50,210 --> 00:10:51,940 >> Naam hii haina tu kujenga sanduku moja. 229 00:10:51,940 --> 00:10:53,800 Hii kweli inajenga masanduku mawili. 230 00:10:53,800 --> 00:10:58,670 Na mahusiano, pia itaanzisha hatua katika uhusiano. 231 00:10:58,670 --> 00:11:02,240 Tumekuwa zilizotengwa kuzuia moja ya kumbukumbu juu ya lundo. 232 00:11:02,240 --> 00:11:05,940 Taarifa kwamba juu sanduku sahihi kuna hana jina. 233 00:11:05,940 --> 00:11:06,760 >> Sisi mallocd yake. 234 00:11:06,760 --> 00:11:08,050 Ipo juu ya lundo. 235 00:11:08,050 --> 00:11:10,090 Lakini b ina jina. 236 00:11:10,090 --> 00:11:11,950 Ni pointer kutofautiana kuitwa b. 237 00:11:11,950 --> 00:11:13,910 Kwamba anaishi juu ya stack. 238 00:11:13,910 --> 00:11:18,250 >> Hivyo ni kipande cha kumbukumbu kwamba pointi kwa mtu mwingine. 239 00:11:18,250 --> 00:11:21,840 b ina anuani ya kwamba block ya kumbukumbu. 240 00:11:21,840 --> 00:11:23,757 Haina jina vinginevyo. 241 00:11:23,757 --> 00:11:24,590 Lakini inaelekeza katika hilo. 242 00:11:24,590 --> 00:11:29,760 Hivyo wakati sisi kusema int nyota b sawa na malloc ukubwa wa int, kwamba haki pale, 243 00:11:29,760 --> 00:11:33,490 kwamba mshale kwamba popped up juu ya upande wa kulia huko, jambo ambalo kwa ujumla, 244 00:11:33,490 --> 00:11:36,740 Mimi itabidi hivyo kuonekana tena, ni nini kinatokea. 245 00:11:36,740 --> 00:11:39,341 Yote hayo hufanyika katika kwamba line moja ya kanuni. 246 00:11:39,341 --> 00:11:41,340 Sasa tutaweza kupata zaidi kidogo moja kwa moja tena. 247 00:11:41,340 --> 00:11:43,330 a sawa na ampersand m. 248 00:11:43,330 --> 00:11:46,280 Je, unakumbuka kile sawa ampersand m ni? 249 00:11:46,280 --> 00:11:48,920 Naam hiyo ndiyo anapata m ya mahali. 250 00:11:48,920 --> 00:11:54,150 Au kuweka zaidi diagrammatically, pointi kwa m. 251 00:11:54,150 --> 00:11:56,360 >> a sawa na b. 252 00:11:56,360 --> 00:11:57,560 OK hivyo hapa ni mtu mwingine. 253 00:11:57,560 --> 00:11:59,230 A sawa na b. 254 00:11:59,230 --> 00:12:02,260 Nini kitatokea kwa mchoro wakati huu? 255 00:12:02,260 --> 00:12:04,330 >> Vizuri kukumbuka kuwa matendo operator zoezi 256 00:12:04,330 --> 00:12:08,960 na kumshirikisha thamani ya Haki ya thamani upande wa kushoto. 257 00:12:08,960 --> 00:12:14,820 Hivyo badala ya akizungumzia m, sasa anazungumzia sehemu moja kwamba pointi b. 258 00:12:14,820 --> 00:12:18,900 a hana uhakika na b, anasema pointi ambapo b. 259 00:12:18,900 --> 00:12:25,280 >> Kama alisema b kwamba ingekuwa wamekuwa sawa na ampersand b. 260 00:12:25,280 --> 00:12:28,150 Lakini badala sawa na b tu ina maana kwamba na b ni sasa 261 00:12:28,150 --> 00:12:31,770 akizungumzia anuani hiyo, kwa sababu ndani ya b ni mahali. 262 00:12:31,770 --> 00:12:35,004 Na sasa ndani ya ni anuani hiyo. 263 00:12:35,004 --> 00:12:37,170 m ni sawa na 10, pengine zaidi jambo moja kwa moja 264 00:12:37,170 --> 00:12:38,690 tumefanya katika kidogo. 265 00:12:38,690 --> 00:12:40,460 Kuweka 10 katika eneo la hatari. 266 00:12:40,460 --> 00:12:45,640 Star b sawa na m pamoja na 2, kukumbuka kutoka wetu kuyatumia video kile nyota b maana yake. 267 00:12:45,640 --> 00:12:50,230 Tunakwenda dereference b na kuweka baadhi thamani kwa kuwa kumbukumbu eneo. 268 00:12:50,230 --> 00:12:51,860 Katika kesi hiyo 12. 269 00:12:51,860 --> 00:12:55,300 >> Hivyo wakati sisi dereference hatua ya kukumbuka sisi tu kusafiri chini mshale. 270 00:12:55,300 --> 00:12:58,205 Au kuweka njia nyingine, sisi kwenda kuwa kumbukumbu anuani 271 00:12:58,205 --> 00:12:59,580 na sisi kuendesha kwa namna fulani. 272 00:12:59,580 --> 00:13:00,830 Sisi kuweka baadhi ya thamani katika huko. 273 00:13:00,830 --> 00:13:03,960 Katika kesi hii nyota b sawa m pamoja na 2 ni tu 274 00:13:03,960 --> 00:13:08,230 kwenda kutofautiana alisema kwa b, kwenda kumbukumbu alisema kwa b, 275 00:13:08,230 --> 00:13:11,750 na kuweka m plus 2 katika huko, 12. 276 00:13:11,750 --> 00:13:14,970 >> Sasa mimi bure b. 277 00:13:14,970 --> 00:13:16,490 Kile kinachotokea wakati mimi bure b? 278 00:13:16,490 --> 00:13:18,800 Kumbuka kile alisema njia ya bure. 279 00:13:18,800 --> 00:13:21,920 Nataka kusema nini wakati mimi bure b? 280 00:13:21,920 --> 00:13:23,410 >> Mimi kosa kufanya kazi na hayo, haki? 281 00:13:23,410 --> 00:13:25,702 Mimi kimsingi kutoa juu ya kumbukumbu. 282 00:13:25,702 --> 00:13:26,910 Mimi kuwapa nyuma na mfumo. 283 00:13:26,910 --> 00:13:33,010 Sina haja hii tena ni nini mimi kuwaambia, sawa? 284 00:13:33,010 --> 00:13:37,390 >> Sasa kama mimi kusema nyota a sawa 11 pengine unaweza 285 00:13:37,390 --> 00:13:40,460 tayari kuwaambia kwamba kitu mbaya kinaenda kutokea hapa, sawa? 286 00:13:40,460 --> 00:13:44,160 Na hakika kama mimi walijaribu kuwa mimi pengine wangepata segmentation kosa. 287 00:13:44,160 --> 00:13:47,140 Kwa sababu sasa, ingawa awali kwamba chunk ya kumbukumbu 288 00:13:47,140 --> 00:13:50,220 ni jambo ambalo sikuwa upatikanaji wa, katika hatua hii 289 00:13:50,220 --> 00:13:54,590 sasa mimi nina kupata kumbukumbu kwamba si kisheria kwa ajili yangu na kupata. 290 00:13:54,590 --> 00:13:57,330 >> Na kama sisi pengine kukumbuka, wakati sisi kupata kumbukumbu 291 00:13:57,330 --> 00:14:00,000 kwamba sisi siyo zinatakiwa kugusa, hiyo ni sababu ya kawaida 292 00:14:00,000 --> 00:14:01,860 ya segmentation kosa. Na hivyo mpango wangu 293 00:14:01,860 --> 00:14:05,170 ingekuwa ajali kama mimi walijaribu kufanya hii. 294 00:14:05,170 --> 00:14:09,910 Hivyo tena ni wazo nzuri ya kupata nzuri mazoezi na nzuri tabia ingrained 295 00:14:09,910 --> 00:14:12,920 wakati wa kufanya kazi kwa malloc na bure, hivyo kwamba huna kuteseka segmentation 296 00:14:12,920 --> 00:14:15,310 makosa, na kwamba matumizi yako dynamically zilizotengwa 297 00:14:15,310 --> 00:14:17,370 kumbukumbu uwajibikaji. 298 00:14:17,370 --> 00:14:20,300 >> Mimi nina Doug Lloyd hii ni CS50. 299 00:14:20,300 --> 00:14:21,947