1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [Valgrind] 2 00:00:02,000 --> 00:00:05,000 [Nate Hardison, Inivèsite Harvard] 3 00:00:05,000 --> 00:00:07,000 Sa a se CS50, CS50.TV] 4 00:00:07,000 --> 00:00:10,000 Gen kèk nan bug yo nan C pwogram ki pi difisil 5 00:00:10,000 --> 00:00:13,000 soti nan movèz jesyon an nan memwa. 6 00:00:13,000 --> 00:00:15,000 Genyen yon kantite gwo a fason yo vis bagay yo, 7 00:00:15,000 --> 00:00:17,000 ki gen ladan kantite lajan allocation a mal nan memwa, 8 00:00:17,000 --> 00:00:20,000 bliye inisyalize varyab, 9 00:00:20,000 --> 00:00:23,000 ekri anvan oswa apre nan fen yon zòn de defans, 10 00:00:23,000 --> 00:00:25,000 ak libere kenbe memwa plizyè fwa. 11 00:00:25,000 --> 00:00:28,000 Sentòm yo varye ant aksidan tanzantan 12 00:00:28,000 --> 00:00:30,000 nan valè Mysteriously efase, 13 00:00:30,000 --> 00:00:34,000 souvan nan kote ak lè lwen yo retire nan erè orijinal la. 14 00:00:34,000 --> 00:00:37,000 Trase pwoblèm nan yo obsève tounen nan kòz la rasin siyalen 15 00:00:37,000 --> 00:00:39,000 yo ka difisil, 16 00:00:39,000 --> 00:00:42,000 , men erezman gen nan yon pwogram itil rele Valgrind 17 00:00:42,000 --> 00:00:44,000 ki ka fè yon anpil ou kapab ede. 18 00:00:44,000 --> 00:00:47,000 >> Ou kouri nan yon pwogram anba Valgrind yo ki ap pèmèt 19 00:00:47,000 --> 00:00:50,000 vaste kont kouran nan alokasyon memwa pil ak akse. 20 00:00:50,000 --> 00:00:53,000 Lè Valgrind detekte yon pwoblèm, li ba ou imedya, 21 00:00:53,000 --> 00:00:56,000 dirèk enfòmasyon ki pèmèt ou 22 00:00:56,000 --> 00:00:58,000 pi fasil jwenn ak ranje pwoblèm nan. 23 00:00:58,000 --> 00:01:01,000 Valgrind tou rapò sou pwoblèm ki ka touye moun mwens memwa, 24 00:01:01,000 --> 00:01:04,000 tankou fwit memwa, allocation memwa pil wòch, 25 00:01:04,000 --> 00:01:07,000 ak bliye libere li. 26 00:01:07,000 --> 00:01:10,000 Renmen du nou an, rezone, nan debugjeur nou an, gdb, 27 00:01:10,000 --> 00:01:14,000 Valgrind se lojisyèl gratis, epi li enstale sou aparèy la. 28 00:01:14,000 --> 00:01:16,000 Valgrind kouri sou ègzèkutabl binè ou a, 29 00:01:16,000 --> 00:01:20,000 pa c. ou a oswa. dosye h kòd sous, 30 00:01:20,000 --> 00:01:23,000 donk asire w ke ou te konpile yon kopi monte-a-dat nan pwogram ou an 31 00:01:23,000 --> 00:01:25,000 lè l sèvi avèk sonnen oswa Fè. 32 00:01:25,000 --> 00:01:28,000 Lè sa a,, kouri pwogram ou an anba Valgrind kapab 33 00:01:28,000 --> 00:01:32,000 tankou senp kòm jis prefiks yo lòd, ki pwogram estanda ak Valgrind nan mo, 34 00:01:32,000 --> 00:01:35,000 ki kòmanse moute Valgrind epi kouri pwogram nan andedan nan li. 35 00:01:35,000 --> 00:01:38,000 Lè kòmanse, Valgrind fè kèk konplèks 36 00:01:38,000 --> 00:01:41,000 jiggering nan konfigirasyon ègzèkutabl a pou chèk yo memwa, 37 00:01:41,000 --> 00:01:44,000 se konsa li ka pran yon ti jan yo ka resevwa leve, li kouri. 38 00:01:44,000 --> 00:01:48,000 Pwogram lan pral Lè sa a, egzekite nòmalman, se pou li pi plis dousman, 39 00:01:48,000 --> 00:01:52,000 ak lè li fini, Valgrind pral enprime yon rezime de itilizasyon memwa li yo. 40 00:01:52,000 --> 00:01:58,000 Si tout bagay ale byen, li pral gade yon bagay tankou sa a: 41 00:01:58,000 --> 00:02:01,000 Nan ka sa a,. / Clean_program 42 00:02:01,000 --> 00:02:04,000 se chemen an nan pwogram lan mwen vle kouri. 43 00:02:04,000 --> 00:02:06,000 E pandan ke yon sèl sa a pa pran okenn agiman, 44 00:02:06,000 --> 00:02:09,000 si li te fè m 'D jis fofile yo sou a nan fen yo lòd, ki kòm dabitid. 45 00:02:09,000 --> 00:02:12,000 Pwogram Netwaye se jis yon pwogram komik ti kras mwen te kreye 46 00:02:12,000 --> 00:02:15,000 ki repati espas pou yon blòk nan antye sou pil wòch la, 47 00:02:15,000 --> 00:02:19,000 mete kèk valè andedan nan yo, ak libere blòk nan tout antye. 48 00:02:19,000 --> 00:02:23,000 Sa a se sa w ap tire pou li a, pa gen okenn erè e pa gen fwit. 49 00:02:23,000 --> 00:02:27,000 >> Yon lòt metrik enpòtan an se kantite total bytes afekte. 50 00:02:27,000 --> 00:02:32,000 Tou depan de pwogram lan, si alokasyon ou yo nan megabit yo oswa pi wo, 51 00:02:32,000 --> 00:02:34,000 w ap pwobableman fè yon bagay ki mal. 52 00:02:34,000 --> 00:02:37,000 Èske ou san nesesite estoke Doublon? 53 00:02:37,000 --> 00:02:40,000 Èske ou lè l sèvi avèk pil wòch la pou l sa konsève, lè li ta pi bon yo sèvi ak chemine a? 54 00:02:40,000 --> 00:02:43,000 Se konsa, erè memwa ka vrèman sa ki mal. 55 00:02:43,000 --> 00:02:46,000 Yo menm ki pi plis aklè lakòz aksidan espektakilè, 56 00:02:46,000 --> 00:02:49,000 men menm lè sa a li ka toujou difisil yo sible 57 00:02:49,000 --> 00:02:51,000 ki sa egzakteman te mennen nan kolizyon an. 58 00:02:51,000 --> 00:02:54,000 Plis ensidyezman, yon pwogram ki gen yon erè memwa 59 00:02:54,000 --> 00:02:56,000 ka toujou konpile propr 60 00:02:56,000 --> 00:02:58,000 epi li ka toujou sanble yo travay kòrèkteman 61 00:02:58,000 --> 00:03:01,000 paske ou jere yo jwenn chans pi fò nan tan an. 62 00:03:01,000 --> 00:03:04,000 Apre plizyè "rezilta pozitif," 63 00:03:04,000 --> 00:03:07,000 ou ta ka jis panse ke yon aksidan se yon trematòd nan òdinatè a, 64 00:03:07,000 --> 00:03:10,000 men òdinatè a se pa janm sa ki mal. 65 00:03:10,000 --> 00:03:13,000 >> Kouri Valgrind ka ede ou foule anba kòz la nan erè memwa vizib 66 00:03:13,000 --> 00:03:18,000 kòm byen ke jwenn kachèt erè ou fè pa menm ankò konnen sou. 67 00:03:18,000 --> 00:03:22,000 Chak fwa Valgrind detekte yon pwoblèm, li simagri enfòmasyon sou ki sa li obsève. 68 00:03:22,000 --> 00:03:24,000 Chak bagay se jistis lapide - 69 00:03:24,000 --> 00:03:27,000 sous liy lan nan enstriksyon chokan an, ki sa pwoblèm nan ye, se 70 00:03:27,000 --> 00:03:30,000 ak yon info ti kras sou memwa a ki enplike - 71 00:03:30,000 --> 00:03:34,000 men souvan li a ase enfòmasyon yo dirije atansyon ou nan plas la dwat. 72 00:03:34,000 --> 00:03:37,000 Isit la se yon egzanp sou Valgrind kouri sou yon pwogram buggy 73 00:03:37,000 --> 00:03:40,000 ki fè yon Read envalid nan memwa pil wòch. 74 00:03:40,000 --> 00:03:49,000 Nou wè pa gen okenn erè oswa avètisman nan konpilasyon. 75 00:03:49,000 --> 00:03:53,000 Uh-oh, rezime a erè di ke gen de erè - 76 00:03:53,000 --> 00:03:56,000 de envalid rédiger nan gwosè 4 - bytes, se sa ki. 77 00:03:56,000 --> 00:04:01,000 Ni move li te fèt nan fonksyon prensipal invalid_read.c, 78 00:04:01,000 --> 00:04:04,000 premye a sou liy 16 ak dezyèm lan sou liy 19. 79 00:04:04,000 --> 00:04:06,000 Se pou yo gade nan kòd la. 80 00:04:06,000 --> 00:04:11,000 Sanble rele nan premye printf ap eseye li yon int sot pase nan fen blòk memwa nou an. 81 00:04:11,000 --> 00:04:13,000 Si nou gade tounen nan pwodiksyon Valgrind a, 82 00:04:13,000 --> 00:04:16,000 nou wè ke Valgrind te di nou egzakteman sa. 83 00:04:16,000 --> 00:04:19,000 Adrès la nou ap eseye li kòmanse 0 bytes 84 00:04:19,000 --> 00:04:22,000 sot pase nan fen blòk la nan gwosè 16 bytes - 85 00:04:22,000 --> 00:04:25,000 kat 32-bit antye ke nou resevwa lajan. 86 00:04:25,000 --> 00:04:29,000 Sa se, adrès la nou t ap eseye li kòmanse dwa nan fen blòk nou an, 87 00:04:29,000 --> 00:04:32,000 menm jan nou wè nan rele move nou printf. 88 00:04:32,000 --> 00:04:36,000 Koulye a, envalid rédiger pa ta ka sanble tankou ki gwo de yon kontra, 89 00:04:36,000 --> 00:04:39,000 Men, si w ap itilize ki done kontwole koule nan pwogram ou an - 90 00:04:39,000 --> 00:04:42,000 pou egzanp, kòm yon pati nan yon si deklarasyon oubyen riban - 91 00:04:42,000 --> 00:04:45,000 Lè sa a, bagay sa yo ka an silans ale move. 92 00:04:45,000 --> 00:04:47,000 Gade ki jan mwen ka kouri pwogram nan invalid_read 93 00:04:47,000 --> 00:04:50,000 e pa gen anyen soti nan òdinè a rive. 94 00:04:50,000 --> 00:04:52,000 Pè, huh? 95 00:04:52,000 --> 00:04:56,000 >> Koulye a, kite pou yo gade nan kèk lòt kalite erè ke ou ta ka rankontre nan kòd ou a, 96 00:04:56,000 --> 00:04:59,000 epi n ap wè ki jan Valgrind detekte yo. 97 00:04:59,000 --> 00:05:01,000 Nou jis te wè yon egzanp yon invalid_read, 98 00:05:01,000 --> 00:05:04,000 Se konsa kounye a kite a tcheke deyò yon invalid_write. 99 00:05:04,000 --> 00:05:09,000 Yon fwa ankò, pa gen okenn erè oswa avètisman nan konpilasyon. 100 00:05:09,000 --> 00:05:12,000 Okay, Valgrind di ke gen de erè nan pwogram sa a - 101 00:05:12,000 --> 00:05:15,000 ak invalid_write ak invalid_read yon. 102 00:05:15,000 --> 00:05:18,000 Se pou nou tcheke deyò sa a kòd. 103 00:05:18,000 --> 00:05:21,000 Sanble nou te gen yon egzanp nan strlèn la klasik plis ensèk yon sèl. 104 00:05:21,000 --> 00:05:24,000 Kòd la fè sa ki pa malok yon multiple siplemantè nan espas 105 00:05:24,000 --> 00:05:26,000 pou pèsonaj la / 0, 106 00:05:26,000 --> 00:05:30,000 Se konsa, lè str kopi ale nan ekri li nan ssubstrlen "cs50 wòch!" 107 00:05:30,000 --> 00:05:33,000 li te ekri 1 multiple sot pase nan fen blòk nou an. 108 00:05:33,000 --> 00:05:36,000 Invalid_read la vini lè nou fè rele nou an printf. 109 00:05:36,000 --> 00:05:40,000 Printf fini moute lekti envalid memwa lè li li / 0 a karaktè 110 00:05:40,000 --> 00:05:43,000 kòm li sanble nan fen sa a fisèl E li nan enprime. 111 00:05:43,000 --> 00:05:45,000 Men, pa youn nan sa a chape Valgrind. 112 00:05:45,000 --> 00:05:48,000 Nou wè ke li kenbe invalid_write a kòm yon pati nan kopi a str 113 00:05:48,000 --> 00:05:51,000 sou liy 11 nan prensipal yo, ak invalid_read a se yon pati nan printf. 114 00:05:51,000 --> 00:05:54,000 Rock sou li a, Valgrind. 115 00:05:54,000 --> 00:05:57,000 Yon fwa ankò, sa a pa ta ka sanble tankou yon kontra gwo. 116 00:05:57,000 --> 00:06:00,000 Nou ka kouri pwogram sa a sou yo ak sou deyò nan Valgrind 117 00:06:00,000 --> 00:06:03,000 epi yo pa wè nenpòt ki sentòm erè. 118 00:06:03,000 --> 00:06:06,000 >> Sepandan, kite pou yo gade nan yon varyasyon ti tay sa a yo wè 119 00:06:06,000 --> 00:06:09,000 ki jan bagay yo ka jwenn reyèlman move. 120 00:06:09,000 --> 00:06:14,000 Se konsa, yo akòde, n ap abize bagay sa yo pi plis pase jis yon ti jan nan sa a kòd. 121 00:06:14,000 --> 00:06:17,000 Nou ap sèlman allocation espas sou pil wòch la pou de strings 122 00:06:17,000 --> 00:06:19,000 longè nan cs50 wòch, 123 00:06:19,000 --> 00:06:22,000 tan sa a, sonje / 0 a karaktè. 124 00:06:22,000 --> 00:06:25,000 Men, lè sa a nou jete nan yon fisèl super-long nan blòk la memwa 125 00:06:25,000 --> 00:06:27,000 ki S se lonje dwèt yo. 126 00:06:27,000 --> 00:06:30,000 Ki efè pral ki gen sou blòk la memwa ki pwen T yo? 127 00:06:30,000 --> 00:06:34,000 Byen, si pwen T a memwa sa se sèlman adjasan a S, 128 00:06:34,000 --> 00:06:37,000 vini jis apre li, 129 00:06:37,000 --> 00:06:39,000 Lè sa a, nou ta ka yo te ekri sou yon pati nan T. 130 00:06:39,000 --> 00:06:41,000 Se pou nou kouri sa a kòd. 131 00:06:41,000 --> 00:06:43,000 Gade nan sa ki te pase. 132 00:06:43,000 --> 00:06:47,000 Strings yo nou ki estoke nan blòk pil nou tou de parèt devan yo te soti enprime kòrèkteman. 133 00:06:47,000 --> 00:06:49,000 Pa gen anyen sanble sa ki mal nan tout. 134 00:06:49,000 --> 00:06:52,000 Sepandan, kite yo ale tounen nan kòd nou yo ak 135 00:06:52,000 --> 00:06:55,000 kòmantè soti nan liy kote nou kopye cs50 wòch 136 00:06:55,000 --> 00:06:59,000 nan blòk la memwa dezyèm fwa, pwente ke t. 137 00:06:59,000 --> 00:07:02,000 Koulye a, lè nou kouri sa a kòd nou ta dwe 138 00:07:02,000 --> 00:07:06,000 wè sèlman sa ki nan blòk la memwa premye enprime soti. 139 00:07:06,000 --> 00:07:09,000 Ola, menm si nou pa t 'str kopi 140 00:07:09,000 --> 00:07:12,000 nenpòt karaktè nan blòk la pil dezyèm fwa, yon sèl la pwente ke T, 141 00:07:12,000 --> 00:07:15,000 nou jwenn yon ekri an lèt detache soti. 142 00:07:15,000 --> 00:07:18,000 Vreman vre, yo fisèl la nou boure nan blòk premye nou 143 00:07:18,000 --> 00:07:21,000 anvai blòk la premye ak nan blòk, dezyèm lan, 144 00:07:21,000 --> 00:07:23,000 fè tout bagay sanble nòmal. 145 00:07:23,000 --> 00:07:26,000 Valgrind, menm si, di nou istwa a vre. 146 00:07:26,000 --> 00:07:28,000 Gen nou ale. 147 00:07:28,000 --> 00:07:32,000 Tout moun sa yo valab li epi ekri. 148 00:07:32,000 --> 00:07:36,000 >> Se pou yo gade nan yon egzanp sou yon lòt kalite erè. 149 00:07:36,000 --> 00:07:39,000 Isit la nou fè yon bagay olye malere. 150 00:07:39,000 --> 00:07:41,000 Nou gen tan pwan espas pou yon int sou pil wòch la, 151 00:07:41,000 --> 00:07:45,000 epi nou inisyalize yon konsèy Int - p - nan pwen espas sa a. 152 00:07:45,000 --> 00:07:48,000 Sepandan, pandan ke se konsèy nou inisyalizèd, 153 00:07:48,000 --> 00:07:52,000 done yo ke li nan montre nan jis te tou sa tenten se nan pati sa a nan pil wòch la. 154 00:07:52,000 --> 00:07:55,000 Se konsa, lè nou chaje ki done an int mwen, 155 00:07:55,000 --> 00:07:57,000 nou teknikman inisyalize mwen, 156 00:07:57,000 --> 00:08:00,000 men nou fè sa avèk done tenten. 157 00:08:00,000 --> 00:08:03,000 Apèl la afime, ki se yon macro debogaj sou la men 158 00:08:03,000 --> 00:08:06,000 sa defini nan jistèman te rele bibliyotèk la revandike, 159 00:08:06,000 --> 00:08:09,000 pral avote pwogram nan si kondisyon tès li yo echwe. 160 00:08:09,000 --> 00:08:11,000 Sa se, si mwen se pa 0. 161 00:08:11,000 --> 00:08:14,000 Tou depan de ki sa ki te nan espas ki la pil wòch, pwente ke p, 162 00:08:14,000 --> 00:08:18,000 pwogram sa a ta ka travay pafwa ak fail nan yon lòt lè. 163 00:08:18,000 --> 00:08:20,000 Si li ap travay, nou jis ap resevwa chans. 164 00:08:20,000 --> 00:08:24,000 Du a pa pral trape erè sa, men Valgrind asire w volonte. 165 00:08:24,000 --> 00:08:28,000 Gen nou wè erè a isu de fason nou itilize nan ki done tenten. 166 00:08:28,000 --> 00:08:32,000 >> Lè ou asiyen memwa pil wòch, men se pa deallocate li oswa libere l ', 167 00:08:32,000 --> 00:08:34,000 yo rele yon fwit. 168 00:08:34,000 --> 00:08:37,000 Pou yon ti, pwogram kout viv-ki kouri ak imedyatman sòti, 169 00:08:37,000 --> 00:08:39,000 fwit yo egalman inofansif, 170 00:08:39,000 --> 00:08:42,000 men pou yon pwojè nan pi gwo gwosè ak / oswa lonjevite, 171 00:08:42,000 --> 00:08:46,000 menm yon fwit ti ka konpoze nan yon bagay enpòtan yo. 172 00:08:46,000 --> 00:08:49,000 Pou CS50, nou espere ou nan 173 00:08:49,000 --> 00:08:51,000 pran swen nan libere tout memwa nan pil ke ou asiyen, 174 00:08:51,000 --> 00:08:54,000 depi nou ta vle nou vin devlope aptitid yo nan byen okipe pwosesis la manyèl 175 00:08:54,000 --> 00:08:56,000 egzije C. 176 00:08:56,000 --> 00:08:59,000 Pou fè sa, pwogram ou an ta dwe gen yon egzak 177 00:08:59,000 --> 00:09:03,000 yon sèl-a-youn korespondans ant malok ak apèl gratis. 178 00:09:03,000 --> 00:09:06,000 Erezman, Valgrind ka ede ou avèk fwit memwa tou. 179 00:09:06,000 --> 00:09:09,000 Isit la se yon pwogram ki gen fuit rele leak.c ki rezèvè 180 00:09:09,000 --> 00:09:13,000 espas sou pil wòch la, ekri sou li, men se pa libere li. 181 00:09:13,000 --> 00:09:16,000 Nou konpile l 'ak Fè epi kouri l' anba Valgrind, 182 00:09:16,000 --> 00:09:18,000 e nou wè ke, pandan ke nou pa gen okenn erè memwa, 183 00:09:18,000 --> 00:09:20,000 Nou gen yon sèl koule. 184 00:09:20,000 --> 00:09:23,000 Gen 16 bytes definitivman pèdi, 185 00:09:23,000 --> 00:09:27,000 sa vle di konsèy la ak sa yo ki memwa pa t 'nan dimansyon lè pwogram lan soti nan. 186 00:09:27,000 --> 00:09:30,000 Koulye a, Valgrind pa ban nou yon tòn enfòmasyon sou koule a, 187 00:09:30,000 --> 00:09:35,000 Men, si nou swiv nòt sa a ti kras ke li bay desann nan direksyon pou anba a nan rapò li yo 188 00:09:35,000 --> 00:09:38,000 relance ak - fuit radyasyon-tcheke = plen 189 00:09:38,000 --> 00:09:41,000 yo wè detay yo plen ak fwit memwa, 190 00:09:41,000 --> 00:09:44,000 nou pral jwenn plis enfòmasyon. 191 00:09:44,000 --> 00:09:46,000 Koulye a, nan rezime a pil, 192 00:09:46,000 --> 00:09:50,000 Valgrind di nou kote yo te memwa a ki te pèdi okòmansman afekte. 193 00:09:50,000 --> 00:09:52,000 Menm jan nou konnen soti nan gade nan kòd la sous, 194 00:09:52,000 --> 00:09:55,000 Valgrind enfòme nou ke nou fwit memwa a 195 00:09:55,000 --> 00:09:58,000 afekte ak yon apèl nan malok sou liy 8 nan leak.c 196 00:09:58,000 --> 00:10:00,000 nan fonksyon prensipal la. 197 00:10:00,000 --> 00:10:02,000 Joli debouya. 198 00:10:02,000 --> 00:10:04,000 >> Valgrind classe fwit lè l sèvi avèk tèm sa yo: 199 00:10:04,000 --> 00:10:07,000 Definitivman pèdi - sa a se memwa pil wòch afekte 200 00:10:07,000 --> 00:10:10,000 yo ki pwogram lan pa gen okenn yon konsèy. 201 00:10:10,000 --> 00:10:14,000 Valgrind ki konnen nou yon fwa te gen konsèy la, men depi lè pèdi tras nan li. 202 00:10:14,000 --> 00:10:17,000 Sa a memwa definitivman fwit. 203 00:10:17,000 --> 00:10:20,000 Endirèkteman pèdi - sa a se memwa pil wòch afekte 204 00:10:20,000 --> 00:10:24,000 yo ki pwent yo sèlman nan li tou yo pèdi. 205 00:10:24,000 --> 00:10:27,000 Pou egzanp, si ou pèdi konsèy ou nan ne an premye nan yon lis lye, 206 00:10:27,000 --> 00:10:30,000 Lè sa a, ta ne nan premye tèt li dwe definitivman pèdi, 207 00:10:30,000 --> 00:10:34,000 pandan y ap nenpòt nœuds ki vin apre ta dwe endirèkteman pèdi. 208 00:10:34,000 --> 00:10:37,000 Li posib pèdi - sa a se memwa pil wòch afekte 209 00:10:37,000 --> 00:10:41,000 yo ki Valgrind pa kapab asire w ke si gen yon konsèy oswa ou pa. 210 00:10:41,000 --> 00:10:44,000 Toujou aksesibl se memwa pil wòch afekte 211 00:10:44,000 --> 00:10:47,000 yo ki pwogram lan toujou gen yon konsèy nan sòti, 212 00:10:47,000 --> 00:10:50,000 ki tipikman vle di ke yon mondyal pwen varyab li. 213 00:10:50,000 --> 00:10:53,000 Pou tcheke pou sa yo fwit, ou pral gen tou genyen ladan yo opsyon nan 214 00:10:53,000 --> 00:10:55,000 - Toujou-aksesibl = repons lan se wi 215 00:10:55,000 --> 00:10:58,000 nan invoké ou nan Valgrind. 216 00:10:58,000 --> 00:11:01,000 >> Ka sa yo diferan ta ka mande pou estrateji diferan pou netwaye yo moute, 217 00:11:01,000 --> 00:11:05,000 men fwit yo ta dwe elimine. 218 00:11:05,000 --> 00:11:08,000 Malerezman, e fikse fwit ka difisil fè, 219 00:11:08,000 --> 00:11:11,000 depi apèl kòrèk gratis ka kònen moute pwogram ou an. 220 00:11:11,000 --> 00:11:14,000 Pou egzanp, si nou gade nan invalid_free.c, 221 00:11:14,000 --> 00:11:18,000 nou wè yon egzanp sou deallocation memwa move. 222 00:11:18,000 --> 00:11:21,000 Ki sa ki ta dwe yon apèl sèl libere blòk la tout antye 223 00:11:21,000 --> 00:11:24,000 nan memwa pwente ke int_block, 224 00:11:24,000 --> 00:11:27,000 te olye vin tounen yon eseye libere chak seksyon int ki menm gwosè ak 225 00:11:27,000 --> 00:11:29,000 nan memwa a endividyèlman. 226 00:11:29,000 --> 00:11:32,000 Sa a pral fail catastrophically. 227 00:11:32,000 --> 00:11:34,000 Boom! Ki sa ki yon erè. 228 00:11:34,000 --> 00:11:36,000 Sa a se definitivman pa bon. 229 00:11:36,000 --> 00:11:39,000 Si w ap kole ak sa a kalite erè, menm si, epi ou pa konnen ki kote gade, 230 00:11:39,000 --> 00:11:41,000 tonbe sou do yo nouvo zanmi ou pi byen. 231 00:11:41,000 --> 00:11:44,000 Ou dvine li - Valgrind. 232 00:11:44,000 --> 00:11:47,000 Valgrind, kòm toujou, konnen ekzakteman ki sa a jiska. 233 00:11:47,000 --> 00:11:50,000 Konte yo alok ak gratis pa matche ak moute. 234 00:11:50,000 --> 00:11:52,000 Nou gen 1 alok ak 4 Delivery. 235 00:11:52,000 --> 00:11:55,000 Ak Valgrind di nou tou ki kote premye apèl la move gratis - 236 00:11:55,000 --> 00:11:58,000 youn nan ki deklanche blowup la - ap vini soti nan - 237 00:11:58,000 --> 00:12:00,000 liy 16. 238 00:12:00,000 --> 00:12:03,000 Kòm ou wè la a, apèl mal li libere yo se reyèlman move, 239 00:12:03,000 --> 00:12:05,000 se konsa nou rekòmande pou kite koule pwogram ou an 240 00:12:05,000 --> 00:12:08,000 pandan w ap travay sou resevwa fonksyonalite ki kòrèk la. 241 00:12:08,000 --> 00:12:12,000 Kòmanse ap chèche pou fwit sèlman apre pwogram ou an ap travay byen, 242 00:12:12,000 --> 00:12:14,000 san nenpòt ki erè lòt. 243 00:12:14,000 --> 00:12:16,000 >> Epi sa a, tout nou te gen pou videyo sa a. 244 00:12:16,000 --> 00:12:18,000 Kounye a ki sa yo ou ap tann? 245 00:12:18,000 --> 00:12:21,000 Ale kouri Valgrind sou pwogram ou an kounye a. 246 00:12:21,000 --> 00:12:25,000 Non mwen se Nate Hardison. Sa a se CS50. [CS50.TV]