1 00:00:00,000 --> 00:00:00,499 2 00:00:00,499 --> 00:00:01,395 [MUSIC PLAYING] 3 00:00:01,395 --> 00:00:05,590 4 00:00:05,590 --> 00:00:07,940 >> DOUG LLOYD: OK, belə bir təklif burada başlamazdan əvvəl. 5 00:00:07,940 --> 00:00:11,660 Siz video seyr əgər Siz ilk etmək istəyirəm bilər göstəricilər. 6 00:00:11,660 --> 00:00:15,860 Bu video Çünki başqa göstəricilər ilə iş yolu. 7 00:00:15,860 --> 00:00:17,574 >> Belə ki, danışmaq olacaq bəzi anlayışlar haqqında 8 00:00:17,574 --> 00:00:19,490 biz əhatə ki, video göstəricilərinə, və biz istəyirik 9 00:00:19,490 --> 00:00:21,948 indi onların üzərində parıltı üçün gedir, onlar artıq olduğunu fərz etsək 10 00:00:21,948 --> 00:00:23,090 sort aydın. 11 00:00:23,090 --> 00:00:25,440 Belə ki, yalnız ədalətli xəbərdarlıq var ki, bu video gördükdə əgər 12 00:00:25,440 --> 00:00:27,814 və siz görmədim göstəricilərinə video, güc sort 13 00:00:27,814 --> 00:00:29,610 baş üzərində bir az uçmaq. 14 00:00:29,610 --> 00:00:32,080 Və belə ki, daha yaxşı ola bilər ki, onu izləmək. 15 00:00:32,080 --> 00:00:34,710 >> Beləliklə, biz artıq bir gördük yol, göstəricilər ilə işləmək üçün 16 00:00:34,710 --> 00:00:37,810 olan bir elan edir dəyişən və sonra 17 00:00:37,810 --> 00:00:42,160 bir göstərici bir dəyişən elan dəyişən, ki, göstərir. 18 00:00:42,160 --> 00:00:44,870 Beləliklə, biz yaratdıq bir adı ilə dəyişən, biz 19 00:00:44,870 --> 00:00:48,480 bir adı ilə ikinci dəyişən yaradılmışdır və biz ikinci dəyişən ki, qeyd 20 00:00:48,480 --> 00:00:50,220 ki, ilk. 21 00:00:50,220 --> 00:00:52,370 Bu növ bir problem olsa da, çünki 22 00:00:52,370 --> 00:00:54,650 dəqiq bilmək tələb edir nə qədər yaddaş biz istəyirik 23 00:00:54,650 --> 00:00:57,600 an ehtiyac olacaq proqram tərtib edilir. 24 00:00:57,600 --> 00:00:58,220 >> Niyə ki? 25 00:00:58,220 --> 00:01:03,338 Biz ad etmək lazımdır, çünki ya mümkün dəyişənlərin bütün müəyyən 26 00:01:03,338 --> 00:01:04,129 biz qarşılaşa bilər. 27 00:01:04,129 --> 00:01:07,910 Biz ola bilər ki, bir sıra ola bilər bir çox informasiya keçirməyə qadir, 28 00:01:07,910 --> 00:01:10,110 lakin hələ deyil kifayət qədər dəqiq dəqiq. 29 00:01:10,110 --> 00:01:12,640 Biz bilirik yoxsa, biz heç bir fikrim yoxdur, əgər 30 00:01:12,640 --> 00:01:14,370 nə qədər biz tərtib zamanda lazımdır? 31 00:01:14,370 --> 00:01:17,020 Yoxsa nə proqram istəsə həqiqətən uzun müddət run, 32 00:01:17,020 --> 00:01:19,810 Müxtəlif istifadəçi qəbul məlumat və biz bilməz, həqiqətən, 33 00:01:19,810 --> 00:01:23,170 biz olsanız qiymətləndirmək 1000 ədəd lazımdır gedir? 34 00:01:23,170 --> 00:01:26,060 >> Bu biz kimi deyil command line demək 35 00:01:26,060 --> 00:01:28,040 neçə maddələr daxil Siz lazımdır düşünürəm. 36 00:01:28,040 --> 00:01:31,100 Yaxşı ki, tahmin yanlış nə olur? 37 00:01:31,100 --> 00:01:34,300 Dinamik yaddaş ayrılması sort bizə yol verir 38 00:01:34,300 --> 00:01:36,867 bu problem ətrafında almaq üçün. 39 00:01:36,867 --> 00:01:38,700 Və yol yoxdur göstəricilərinə istifadə edir. 40 00:01:38,700 --> 00:01:42,140 >> Biz göstəricilərinə istifadə edə bilərsiniz dinamik əldə 41 00:01:42,140 --> 00:01:45,710 edir ayrılmış yaddaş, yaddaş Sizin proqram kimi təsis çalışır. 42 00:01:45,710 --> 00:01:48,290 Bu ayrılır dəfə tərtib deyil. 43 00:01:48,290 --> 00:01:51,570 Zaman dinamik ayrılması yaddaş bir hovuz gəlir 44 00:01:51,570 --> 00:01:53,795 yaddaş yığın kimi tanınır. 45 00:01:53,795 --> 00:01:56,420 Biz əvvəllər bütün yaddaş Əlbəttə ilə işləyir 46 00:01:56,420 --> 00:01:59,920 bir hovuz gələn edilmişdir yaddaş yığını kimi tanınır. 47 00:01:59,920 --> 00:02:02,470 Yaxşı yol ümumiyyətlə mind və bu qayda saxlamaq 48 00:02:02,470 --> 00:02:04,720 həmişə doğru tutmadığını lakin olduqca çox demək olar ki, 49 00:02:04,720 --> 00:02:09,940 həmişə true-- hər hansı ki, keçirir dəfə bir dəyişən adı vermək 50 00:02:09,940 --> 00:02:12,090 yəqin ki, yığını yaşayır. 51 00:02:12,090 --> 00:02:14,650 Və heç bir zaman siz deyil dəyişən bir ad vermək, 52 00:02:14,650 --> 00:02:19,160 dinamik yaddaş edə bilər ki, ayrılması, bu yığın yaşayır. 53 00:02:19,160 --> 00:02:22,190 >> İndi növ kimi bu təqdim edirəm Yaddaş bu iki hovuz var, əgər. 54 00:02:22,190 --> 00:02:24,740 Amma bu görmüşəm bilər ümumiyyətlə diagram, 55 00:02:24,740 --> 00:02:27,290 nümayəndəlik nə yaddaş kimi görünür 56 00:02:27,290 --> 00:02:30,373 və biz bütün qayğı fikrində deyilik üst və alt stuff. 57 00:02:30,373 --> 00:02:33,580 Nə biz qayğı bu hissəsi Burada orta yığın və yığını. 58 00:02:33,580 --> 00:02:35,570 Siz gördüyünüz kimi bu diaqram baxaraq, 59 00:02:35,570 --> 00:02:38,390 Bu əslində iki deyil yaddaş ayrı hovuz. 60 00:02:38,390 --> 00:02:42,757 Bu yaddaş biri paylaşılan hovuz var burada bu vizual başlamaq 61 00:02:42,757 --> 00:02:44,590 Siz altındakı başlamaq və doldurulması başlamaq 62 00:02:44,590 --> 00:02:48,040 yığını ilə alt və sizdən üst başlamaq və doldurulması başlamaq 63 00:02:48,040 --> 00:02:50,072 yığın üst aşağı. 64 00:02:50,072 --> 00:02:51,780 Amma həqiqətən deyil Eyni hovuz, yalnız var 65 00:02:51,780 --> 00:02:56,050 müxtəlif ləkələr, müxtəlif yerlərdə yaddaş təsis olunur ki. 66 00:02:56,050 --> 00:02:59,060 Və həyata çalıştırabilirsiniz ya olan yaddaş 67 00:02:59,060 --> 00:03:01,240 yığın bütün yol getmək aşağı, və ya 68 00:03:01,240 --> 00:03:05,440 yığını üst bütün yol getmək və ya yığın və yığını olan 69 00:03:05,440 --> 00:03:06,740 bir-birinə qarşı cavab verir. 70 00:03:06,740 --> 00:03:09,500 O bütün şərait ola bilər ki, proqram səbəb 71 00:03:09,500 --> 00:03:11,030 yaddaş tökülmək üçün. 72 00:03:11,030 --> 00:03:11,952 Belə ki, nəzərə ki, saxlamaq. 73 00:03:11,952 --> 00:03:13,660 Biz haqqında danışmaq zaman yığın və stack 74 00:03:13,660 --> 00:03:17,880 Biz, həqiqətən, söhbət yaddaş eyni ümumi yığın, yalnız 75 00:03:17,880 --> 00:03:21,930 ki, yaddaş müxtəlif hissələri. 76 00:03:21,930 --> 00:03:24,910 >> Beləliklə, biz dinamik necə əldə edirsiniz ilk növbədə yaddaş ayrılan? 77 00:03:24,910 --> 00:03:27,740 Proqram almaq necə Bu çalışan kimi yaddaş? 78 00:03:27,740 --> 00:03:32,660 Yaxşı C adlı funksiyası təmin edir malloc, yaddaş allocator olan 79 00:03:32,660 --> 00:03:36,810 Siz zəng etmək, və siz keçmək neçə istədiyiniz yaddaş bytes. 80 00:03:36,810 --> 00:03:39,940 Proqram çalışan əgər Belə ki, və bir tam uzunluğu istəyirəm, 81 00:03:39,940 --> 00:03:46,040 Siz dörd bayt Mallock bilər yaddaş, malloc dörd parantez. 82 00:03:46,040 --> 00:03:48,540 >> Mallock keçəcəyi yığın vasitəsilə axtarır, 83 00:03:48,540 --> 00:03:50,750 biz dinamik istəyirik, çünki yaddaş ayrılması, 84 00:03:50,750 --> 00:03:53,500 və bu qayıdacaq ki xatirəsinə bir göstərici. 85 00:03:53,500 --> 00:03:56,180 Bu ki, yaddaş vermir bu bir ad vermək deyil, 86 00:03:56,180 --> 00:03:57,950 siz onu bir göstərici verir. 87 00:03:57,950 --> 00:04:00,780 Daha dedim niyə belə ki bəlkə vacibdir ki, 88 00:04:00,780 --> 00:04:03,770 göstəricilərinə video izlədi biz bu çox almaq əvvəl. 89 00:04:03,770 --> 00:04:05,940 Belə ki, malloc olacaq Bir göstərici geri verir. 90 00:04:05,940 --> 00:04:08,950 >> Mallock hər hansı bir verə bilməz yaddaş tökülmək etdik, çünki, 91 00:04:08,950 --> 00:04:10,645 bir null göstərici geri verəcəyik. 92 00:04:10,645 --> 00:04:15,282 Siz biz əgər nə yadınızdadırmı cəhd və bir null göstərici dereference? 93 00:04:15,282 --> 00:04:17,019 Biz doğru bir seg günah əziyyət? 94 00:04:17,019 --> 00:04:18,060 Yəqin ki, yaxşı deyil. 95 00:04:18,060 --> 00:04:21,579 >> Belə ki, hər dəfə zəng həmişə həmişə malloc 96 00:04:21,579 --> 00:04:25,270 yoxlamaq lazımdır və ya Bu geri null verdi göstərici. 97 00:04:25,270 --> 00:04:28,800 Əgər, sizin proqram başa lazımdır Siz dereference cəhd və əgər çünki 98 00:04:28,800 --> 00:04:31,360 Siz davam olduğunuz null pointer bir seqmentasiya günah əziyyət 99 00:04:31,360 --> 00:04:34,380 və proqram onsuz da qəza gedir. 100 00:04:34,380 --> 00:04:37,190 Belə ki, necə statik biz nə tam almaq? 101 00:04:37,190 --> 00:04:37,730 >> int x. 102 00:04:37,730 --> 00:04:40,010 Biz yəqin ki etdik dəfə bir dəstə, sağ? 103 00:04:40,010 --> 00:04:43,480 Bu adlı dəyişən yaradır yığını yaşayır x. 104 00:04:43,480 --> 00:04:46,190 Necə ki, biz dinamik bir tam almaq olar? 105 00:04:46,190 --> 00:04:50,010 Int star px malloc 4 bərabərdir. 106 00:04:50,010 --> 00:04:53,050 >> Və ya daha uyğun biz int ulduz px demək istədiyiniz 107 00:04:53,050 --> 00:04:57,680 , int malloc ölçüsü bərabərdir yalnız bir az atmaq 108 00:04:57,680 --> 00:04:59,740 Bizim proqramı ətrafında sehrli nömrələri. 109 00:04:59,740 --> 00:05:04,140 Bu, bizim üçün əldə etmək niyyətindədir yığın yaddaş dörd bytes, 110 00:05:04,140 --> 00:05:06,720 və pointer biz almaq geri px adlanır. 111 00:05:06,720 --> 00:05:08,430 Və sonra biz kimi Daha əvvəl həyata 112 00:05:08,430 --> 00:05:13,966 can px dereference üçün ki, yaddaş daxil. 113 00:05:13,966 --> 00:05:15,590 Necə ki, biz istifadəçi bir tam alıram? 114 00:05:15,590 --> 00:05:17,970 Biz int x int almaq bərabərdir demək olar. 115 00:05:17,970 --> 00:05:19,930 Bu olduqca sadə. 116 00:05:19,930 --> 00:05:24,030 Biz bir sıra yaratmaq istəyirsinizsə nə yığını yaşayır üzüb gedirdi x? 117 00:05:24,030 --> 00:05:28,210 ki, adı stack_array-- sal Bizim array kvadrat mötərizədə x. 118 00:05:28,210 --> 00:05:32,419 Bu, bizim bir sıra yaradacaq yığını yaşayır üzüb gedirdi x. 119 00:05:32,419 --> 00:05:34,960 Biz üzüb gedirdi bir sıra yarada ki, çox, yığın yaşayır. 120 00:05:34,960 --> 00:05:37,330 syntax bir ola bilər daha çətin az 121 00:05:37,330 --> 00:05:41,740 lakin biz float demək olar star heap_array bərabərdir 122 00:05:41,740 --> 00:05:44,360 malloc x dəfə float ölçüsü. 123 00:05:44,360 --> 00:05:48,160 Mən keçirilməsi üçün kifayət qədər otaq lazımdır x point dəyərləri üzən. 124 00:05:48,160 --> 00:05:51,560 Belə ki, 100 ehtiyac demək üzüb gedirdi, və ya 1000 üzüb gedirdi. 125 00:05:51,560 --> 00:05:54,810 Belə ki, halda olardı 100 üzüb gedirdi 400 bytes, 126 00:05:54,810 --> 00:05:59,080 və ya 1000 üzüb gedirdi üçün 4000 bytes, Hər float tutur, çünki 127 00:05:59,080 --> 00:06:01,230 kosmik dörd bytes. 128 00:06:01,230 --> 00:06:05,110 >> Bundan sonra mən istifadə edə bilərsiniz heap_array kvadrat mötərizə sintaksis. 129 00:06:05,110 --> 00:06:08,970 Mən stack_array olduğu kimi, mən fərdi onun elementləri əldə edə bilərsiniz 130 00:06:08,970 --> 00:06:11,590 istifadə heap_array sıfır heap_array biridir. 131 00:06:11,590 --> 00:06:15,800 Amma biz bunu edə bilərsiniz səbəb geri çünki C bir sıra adı 132 00:06:15,800 --> 00:06:19,990 həqiqətən bir göstəricisidir ki, serialın ilk element. 133 00:06:19,990 --> 00:06:23,480 Biz elan edirik ki, belə burada yığını üzüb gedirdi array 134 00:06:23,480 --> 00:06:24,810 əslində bir az yanlışdır. 135 00:06:24,810 --> 00:06:27,600 Biz, həqiqətən, var orada kodu ikinci xətt 136 00:06:27,600 --> 00:06:32,360 də bir yığın bir pointer yaratmaq biz sonra bəzi iş yaddaş. 137 00:06:32,360 --> 00:06:35,620 >> Burada böyük problem ilə var dinamik olsa yaddaş ayrılmış, 138 00:06:35,620 --> 00:06:38,360 Bu, həqiqətən, nə və bu yaxşı vərdişləri inkişaf üçün vacibdir 139 00:06:38,360 --> 00:06:39,800 zaman siz çalışırıq. 140 00:06:39,800 --> 00:06:43,060 Statik elan fərqli olaraq yaddaş, yaddaş 141 00:06:43,060 --> 00:06:46,790 avtomatik geri deyil Sizin funksiyası edilir sistemi. 142 00:06:46,790 --> 00:06:49,280 Biz əsas var və əgər belə Əsas funksiyası çağırır 143 00:06:49,280 --> 00:06:53,860 f, başa f bunu nə və proqram nəzarət qaytarır 144 00:06:53,860 --> 00:06:58,810 geri, əsas bütün yaddaş istifadə f geri verilir. 145 00:06:58,810 --> 00:07:01,250 Bu yenidən istifadə edilə bilər bir sıra digər proqram, 146 00:07:01,250 --> 00:07:04,250 və ya digər funksiyası Əsas sonra çağırıb olur. 147 00:07:04,250 --> 00:07:06,970 Bu daha eyni yaddaş üzərində istifadə edə bilərsiniz. 148 00:07:06,970 --> 00:07:09,620 >> Əgər dinamik baxmayaraq yaddaş ayrılması 149 00:07:09,620 --> 00:07:14,380 Siz açıq-aydın demək lazımdır Siz bu tamamlayın sistemi. 150 00:07:14,380 --> 00:07:18,370 Bu, ola bilər, sizin üçün üzərinə keçirilməsi lazımdır Siz həyata çalışan bir problem gətirib çıxara 151 00:07:18,370 --> 00:07:19,290 yaddaş. 152 00:07:19,290 --> 00:07:22,179 Və əslində biz bəzən müraciət bir yaddaş sızıntısı kimi bu. 153 00:07:22,179 --> 00:07:24,970 Və bəzən bu yaddaş sızması həqiqətən, həqiqətən dağıdıcı ola bilər 154 00:07:24,970 --> 00:07:27,020 sistem performansını üçün. 155 00:07:27,020 --> 00:07:31,120 >> Siz tez-tez internet istifadəçi əgər Siz müəyyən web browser istifadə edə bilər 156 00:07:31,120 --> 00:07:35,630 və mən burada adları, lakin bir web browser orada var 157 00:07:35,630 --> 00:07:39,150 həqiqətən olan bədnam edir ki, Sabit deyil yaddaş sızıntıları. 158 00:07:39,150 --> 00:07:44,570 Və sizin browser açıq tərk əgər zaman çox uzun müddət, gün 159 00:07:44,570 --> 00:07:48,060 və gün və ya həftə, bəzən sistem fark bilər 160 00:07:48,060 --> 00:07:49,790 həqiqətən yavaş-yavaş, həqiqətən çalışır. 161 00:07:49,790 --> 00:07:54,640 Və səbəbi ki, browser, yaddaş ayırıb 162 00:07:54,640 --> 00:07:57,320 lakin sonra sistemi izah ki, onunla həyata. 163 00:07:57,320 --> 00:08:01,000 Və belə ki, az yaddaş yarpaqları digər proqramları bütün mövcud 164 00:08:01,000 --> 00:08:04,480 Siz istəyirik, çünki, bölüşmək üçün ki, web browser leaking-- 165 00:08:04,480 --> 00:08:06,755 proqram yaddaşı sızan. 166 00:08:06,755 --> 00:08:08,880 Biz geri yaddaş vermək necə biz onunla Bitirdiğinizde? 167 00:08:08,880 --> 00:08:10,838 Yaxşı xoşbəxtlikdən bir var bunu çox asan bir yoldur. 168 00:08:10,838 --> 00:08:11,710 Biz yalnız azad. 169 00:08:11,710 --> 00:08:15,020 Pulsuz adlı funksiyası var, Bu, yaddaş bir pointer qəbul 170 00:08:15,020 --> 00:08:16,010 və biz getmək iyi. 171 00:08:16,010 --> 00:08:18,310 >> Belə ki, biz istəyirik deyək Bizim proqram orta, 172 00:08:18,310 --> 00:08:21,970 50 simvol malloc istəyirəm. 173 00:08:21,970 --> 00:08:25,710 Biz bir sıra malloc istəyirəm 50 simvol keçirilməsi qadir. 174 00:08:25,710 --> 00:08:29,109 Və biz geri bir göstərici almaq zaman ki, ki, göstərici adı söz. 175 00:08:29,109 --> 00:08:30,900 Biz istəyirik nə sözü ilə edəcəyimiz, 176 00:08:30,900 --> 00:08:33,440 sonra biz olduğunuzda biz yalnız azad edilir. 177 00:08:33,440 --> 00:08:37,460 İndi biz o 50 qayıdıb geri sisteminə yaddaş bytes. 178 00:08:37,460 --> 00:08:40,147 Bəzi digər funksiyası istifadə edə bilərsiniz. 179 00:08:40,147 --> 00:08:43,480 Biz əziyyət narahat yoxdur yaddaş sızıntısı biz söz azad çünki. 180 00:08:43,480 --> 00:08:46,639 Biz geri yaddaş təqdim etdik, belə ki, biz bu iş tamamlayın. 181 00:08:46,639 --> 00:08:48,430 Belə ki, üç var ki, olmalıdır qızıl qaydaları 182 00:08:48,430 --> 00:08:51,700 Siz etdiyiniz zaman nəzərə saxlanılmalıdır dinamik yaddaş ayrılması 183 00:08:51,700 --> 00:08:52,990 malloc ilə. 184 00:08:52,990 --> 00:08:56,480 Yaddaş Hər blok ki, Siz malloc azad edilməlidir 185 00:08:56,480 --> 00:08:58,430 Proqram əvvəl çalışan başa. 186 00:08:58,430 --> 00:09:02,029 İndi yenə cihaz və ya IDE bu növ hər halda sizin üçün olur 187 00:09:02,029 --> 00:09:04,820 səni bu halda baş verəcək Proqram sona çatdıqda, 188 00:09:04,820 --> 00:09:06,880 bütün yaddaş azad olunacaq. 189 00:09:06,880 --> 00:09:10,750 Amma bu ümumiyyətlə yaxşı kodlaşdırma var təcrübə həmişə, Bitirdiğinizde, 190 00:09:10,750 --> 00:09:13,810 Siz mallocd nə pulsuz. 191 00:09:13,810 --> 00:09:16,690 >> Bildirib ki, yalnız şeylər Siz mallocd azad olunmalıdır var. 192 00:09:16,690 --> 00:09:19,880 Siz statik bəyan əgər tam, int x yarı colon, 193 00:09:19,880 --> 00:09:23,500 ki yığını yaşayır, siz sonra x pulsuz istəmirəm. 194 00:09:23,500 --> 00:09:25,970 Siz var belə ki, yalnız şey mallocd azad edilməlidir. 195 00:09:25,970 --> 00:09:28,960 >> Və nəhayət, iki dəfə azad bir şey yoxdur. 196 00:09:28,960 --> 00:09:31,170 Ki, gətirib çıxara bilər başqa qəribə bir vəziyyət. 197 00:09:31,170 --> 00:09:33,530 Siz var hər şey mallocd azad edilməlidir. 198 00:09:33,530 --> 00:09:36,000 Siz var təkcə malloc azad edilməlidir. 199 00:09:36,000 --> 00:09:38,730 Və iki dəfə azad bir şey yoxdur. 200 00:09:38,730 --> 00:09:43,660 >> Belə ki, burada bir nümunə ilə gedək bəzi dinamik ayrılmış nə 201 00:09:43,660 --> 00:09:46,122 yaddaş qarışıq kimi baxmaq bilər bir statik yaddaş ilə. 202 00:09:46,122 --> 00:09:47,080 Burada nə baş verə bilər? 203 00:09:47,080 --> 00:09:48,913 Təqib edə bilərsiniz əgər baxın birlikdə və nə tahmin 204 00:09:48,913 --> 00:09:51,720 biz getmək kimi baş verəcək kodu bütün bu xətlər vasitəsilə. 205 00:09:51,720 --> 00:09:53,980 >> Beləliklə, biz int m deyirlər. 206 00:09:53,980 --> 00:09:54,840 Burada olur? 207 00:09:54,840 --> 00:09:56,339 Yaxşı bu olduqca sadə deyil. 208 00:09:56,339 --> 00:09:59,650 I m adlı tam dəyişən yaradır. 209 00:09:59,650 --> 00:10:01,400 Mən yaşıl rəng ki, rəng, çünki 210 00:10:01,400 --> 00:10:03,730 Mən söhbət alıram mən istifadə haqqında tam dəyişənlər. 211 00:10:03,730 --> 00:10:05,160 Bu qutusu var. 212 00:10:05,160 --> 00:10:08,400 Bu siz m deyirlər və daxilində mağaza integers. 213 00:10:08,400 --> 00:10:12,400 >> Mən sonra int ulduz nə deyə əgər? 214 00:10:12,400 --> 00:10:13,530 Yaxşı ki, olduqca oxşar. 215 00:10:13,530 --> 00:10:15,780 Mən bir qutusu adlı yaradılması alıram. 216 00:10:15,780 --> 00:10:19,100 Bu holdinq int qadir ulduz, integers üçün göstəricilər. 217 00:10:19,100 --> 00:10:21,570 Belə ki, mən də bu yaşıl-ish boyayıcı alıram. 218 00:10:21,570 --> 00:10:24,140 >> Mən bir şey var bilirəm bir tam ilə, 219 00:10:24,140 --> 00:10:25,852 lakin bu tam deyil özü var. 220 00:10:25,852 --> 00:10:27,310 Lakin bu olduqca çox eyni fikirdir. 221 00:10:27,310 --> 00:10:28,101 Mən bir qutusu yaratdıq. 222 00:10:28,101 --> 00:10:30,070 Bu hüququ, həm də İndi yığını yaşayır. 223 00:10:30,070 --> 00:10:32,520 Mən onlara həm adları təqdim etdik. 224 00:10:32,520 --> 00:10:36,750 >> int ulduz b int malloc ölçüsü bərabərdir. 225 00:10:36,750 --> 00:10:38,560 Bu bir az çətin ola bilər. 226 00:10:38,560 --> 00:10:44,110 Ikinci almaq və nə haqqında düşünmək bu diaqram baş gözləmək olardı. 227 00:10:44,110 --> 00:10:50,210 int ulduz b int malloc ölçüsü bərabərdir. 228 00:10:50,210 --> 00:10:51,940 >> Yaxşı bu yalnız bir qutusu yaratmaq deyil. 229 00:10:51,940 --> 00:10:53,800 Bu, həqiqətən, iki qutu yaradır. 230 00:10:53,800 --> 00:10:58,670 Və bu da müəyyən, əlaqələri bir əlaqələr bir nöqtə. 231 00:10:58,670 --> 00:11:02,240 Biz bir blok təsis etdik yığın yaddaş. 232 00:11:02,240 --> 00:11:05,940 Qeyd edək yuxarı sağ qutusu ki bir ad var deyil. 233 00:11:05,940 --> 00:11:06,760 >> Biz bunu mallocd. 234 00:11:06,760 --> 00:11:08,050 Bu yığın mövcuddur. 235 00:11:08,050 --> 00:11:10,090 Amma b bir adı var. 236 00:11:10,090 --> 00:11:11,950 Bu b adlı göstərici dəyişən var. 237 00:11:11,950 --> 00:11:13,910 Bu yığını yaşayır. 238 00:11:13,910 --> 00:11:18,250 >> Belə ki, yaddaş bir parça var başqa bir işarə. 239 00:11:18,250 --> 00:11:21,840 b ünvan ehtiva yaddaş ki, blok. 240 00:11:21,840 --> 00:11:23,757 Bu başqa bir adı yoxdur. 241 00:11:23,757 --> 00:11:24,590 Amma bu göstərir. 242 00:11:24,590 --> 00:11:29,760 Beləliklə, biz int ulduz b bərabərdir deyəndə int malloc ölçüsü, orada ki, 243 00:11:29,760 --> 00:11:33,490 popped ki arrow orada sağ, ki, bütün şey, 244 00:11:33,490 --> 00:11:36,740 Mən görünür lazımdır yenə nə edir. 245 00:11:36,740 --> 00:11:39,341 Ki, bütün baş verir kodu ki, vahid xətt. 246 00:11:39,341 --> 00:11:41,340 İndi biz az daha almaq lazımdır daha sadə. 247 00:11:41,340 --> 00:11:43,330 bir işareti m bərabərdir. 248 00:11:43,330 --> 00:11:46,280 Siz nə bir geri etməyin işareti m bərabərdir? 249 00:11:46,280 --> 00:11:48,920 Yaxşı ki, bir M ünvanını alır var. 250 00:11:48,920 --> 00:11:54,150 Və ya, daha diagrammatically qoymaq m bir xal. 251 00:11:54,150 --> 00:11:56,360 >> bir b bərabərdir. 252 00:11:56,360 --> 00:11:57,560 OK, belə ki, burada başqa biri. 253 00:11:57,560 --> 00:11:59,230 A b bərabərdir. 254 00:11:59,230 --> 00:12:02,260 Nə olacaq diaqram bu dəfə? 255 00:12:02,260 --> 00:12:04,330 >> Yaxşı ki, geri tapşırıq operator işləri 256 00:12:04,330 --> 00:12:08,960 on dəyər təyin sağ sol dəyəri. 257 00:12:08,960 --> 00:12:14,820 M Belə ki, əvəzinə bir işarə, indi b bal eyni yerdə göstərir. 258 00:12:14,820 --> 00:12:18,900 a, b bir işarə etmir b xal göstərir. 259 00:12:18,900 --> 00:12:25,280 >> Bir guşəli ki b Əgər olardı bir işareti b bərabərdir olmuşdur. 260 00:12:25,280 --> 00:12:28,150 Lakin əvəzinə yalnız b bərabərdir o deməkdir ki, və b indi 261 00:12:28,150 --> 00:12:31,770 eyni ünvana çünki işarə b daxilində yalnız bir ünvanı. 262 00:12:31,770 --> 00:12:35,004 İndi daxilində eyni ünvanı. 263 00:12:35,004 --> 00:12:37,170 m yəqin ki, 10 bərabərdir ən sadə şey 264 00:12:37,170 --> 00:12:38,690 biz bir az etdik. 265 00:12:38,690 --> 00:12:40,460 Qutusuna 10 qoyun. 266 00:12:40,460 --> 00:12:45,640 Star b m bərabərdir plus 2, geri Bizim göstəricilərinə video nə star b deməkdir. 267 00:12:45,640 --> 00:12:50,230 Biz dereference b və qoymaq olacaq ki, yaddaş yeri bəzi dəyəri. 268 00:12:50,230 --> 00:12:51,860 Bu halda 12. 269 00:12:51,860 --> 00:12:55,300 >> Belə ki, biz bir nöqtəyə dereference biz yalnız arrow aşağı səyahət xatırlayıram. 270 00:12:55,300 --> 00:12:58,205 Və ya başqa bir yol qoymaq, biz ki, yaddaş ünvan getmək 271 00:12:58,205 --> 00:12:59,580 və biz bir şəkildə manipulyasiya. 272 00:12:59,580 --> 00:13:00,830 Biz orada bəzi dəyəri qoymaq. 273 00:13:00,830 --> 00:13:03,960 Bu halda star b m bərabərdir plus 2 yalnız 274 00:13:03,960 --> 00:13:08,230 dəyişən gedin b ilə işarə xatirəsinə getmək, b ilə işarə 275 00:13:08,230 --> 00:13:11,750 12, orada m plus 2 qoydu. 276 00:13:11,750 --> 00:13:14,970 >> İndi b pulsuz. 277 00:13:14,970 --> 00:13:16,490 Mən b pulsuz ne olur? 278 00:13:16,490 --> 00:13:18,800 Pulsuz vasitələri dediklərini xatırlayıram. 279 00:13:18,800 --> 00:13:21,920 Mən b pulsuz zaman mən nə deyirəm? 280 00:13:21,920 --> 00:13:23,410 >> Mən bu iş görülən alıram, sağ? 281 00:13:23,410 --> 00:13:25,702 Mən mahiyyətcə yaddaş verir. 282 00:13:25,702 --> 00:13:26,910 Mən sistem geri verir. 283 00:13:26,910 --> 00:13:33,010 Mən bu artıq ehtiyac yoxdur Mən OK, onları deyirəm? 284 00:13:33,010 --> 00:13:37,390 >> İndi deyirlər ki, əgər ulduz 11 yəqin ki, bilər bərabərdir 285 00:13:37,390 --> 00:13:40,460 Artıq pis bir şey demək sağ, burada baş verəcək? 286 00:13:40,460 --> 00:13:44,160 Mən yəqin ki, cəhd həqiqətən əgər bir seqmentasiya günah əziyyət olardı. 287 00:13:44,160 --> 00:13:47,140 İndi Çünki, baxmayaraq ki, yaddaş əvvəl ki, yığın 288 00:13:47,140 --> 00:13:50,220 Mən idi, bir şey bu nöqtədə giriş, 289 00:13:50,220 --> 00:13:54,590 indi yaddaş daxil edirəm ki, Mənə daxil olmaq üçün qanuni deyil. 290 00:13:54,590 --> 00:13:57,330 >> Və biz yəqin ki, olacaq biz yaddaş daxil zaman, geri 291 00:13:57,330 --> 00:14:00,000 biz toxunmaq ehtimal deyilik ki, ən ümumi səbəb var 292 00:14:00,000 --> 00:14:01,860 bir seqmentasiya günah. Və mənim proqram 293 00:14:01,860 --> 00:14:05,170 Mən bunu cəhd əgər qəza olardı. 294 00:14:05,170 --> 00:14:09,910 Belə ki, daha yaxşı almaq üçün yaxşı bir fikirdir təcrübə və yaxşı vərdişlər kök salmış 295 00:14:09,910 --> 00:14:12,920 malloc və pulsuz ilə iş zaman, belə ki, seqmentasiya əziyyət deyil ki, 296 00:14:12,920 --> 00:14:15,310 istifadə ki, çatışmazlıqlar Sizin dinamik ayrılmış 297 00:14:15,310 --> 00:14:17,370 yaddaş məsuliyyətlə. 298 00:14:17,370 --> 00:14:20,300 >> Mən Doug Lloyd edirəm bu CS50 edir. 299 00:14:20,300 --> 00:14:21,947