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, Ollscoil Harvard] 3 00:00:05,000 --> 00:00:07,000 Is é seo an CS50, CS50.TV] 4 00:00:07,000 --> 00:00:10,000 Tá cuid de na bugs is deacra i gcláir C 5 00:00:10,000 --> 00:00:13,000 thagann as an mismanagement de chuimhne. 6 00:00:13,000 --> 00:00:15,000 Tá líon mór de na bealaí chun rudaí a scriú suas, 7 00:00:15,000 --> 00:00:17,000 lena n-áirítear leithdháileadh an méid mícheart de chuimhne, 8 00:00:17,000 --> 00:00:20,000 dearmad a athróg a thúsú, 9 00:00:20,000 --> 00:00:23,000 scríbhinn roimh nó tar éis deireadh a Maolán, 10 00:00:23,000 --> 00:00:25,000 agus freeing a choinneáil ar amanna cuimhne il. 11 00:00:25,000 --> 00:00:28,000 Raon na comharthaí ó tuairteanna uaineach 12 00:00:28,000 --> 00:00:30,000 do luachanna mysteriously overwritten, 13 00:00:30,000 --> 00:00:34,000 go minic ar áiteanna agus amanna i bhfad a bhaintear as an earráid bunaidh. 14 00:00:34,000 --> 00:00:37,000 Tracing an fhadhb faoi deara ar ais go dtí an bhunchúis bun 15 00:00:37,000 --> 00:00:39,000 Is féidir a bheith dúshlánach, 16 00:00:39,000 --> 00:00:42,000 ach ar an dea tá clár cabhrach ar a dtugtar Valgrind 17 00:00:42,000 --> 00:00:44,000 is féidir a dhéanamh go leor chun cabhrú leat. 18 00:00:44,000 --> 00:00:47,000 >> Ritheann tú i leith cláir faoi Valgrind a chur ar chumas 19 00:00:47,000 --> 00:00:50,000 seiceáil fhairsing de leithdháiltí cuimhne gcarn agus rochtain. 20 00:00:50,000 --> 00:00:53,000 Nuair a bhraitheann Valgrind ar fhadhb, tugann sé leat láithreach, 21 00:00:53,000 --> 00:00:56,000 faisnéis dhíreach a ligeann duit 22 00:00:56,000 --> 00:00:58,000 níos éasca a aimsiú agus an fhadhb a shocrú. 23 00:00:58,000 --> 00:01:01,000 Valgrind freisin tuarascálacha ar cheisteanna cuimhne níos lú deadly, 24 00:01:01,000 --> 00:01:04,000 cosúil le leaks cuimhne, leithdháileadh cuimhne gcarn, 25 00:01:04,000 --> 00:01:07,000 agus forgetting go saor in aisce é. 26 00:01:07,000 --> 00:01:10,000 Cosúil ár Tiomsaitheoir, clang, inár dífhabhtóir, GDB, 27 00:01:10,000 --> 00:01:14,000 Is é Valgrind bogearraí saor in aisce, agus tá sé suiteáilte ar an fearas. 28 00:01:14,000 --> 00:01:16,000 Valgrind ritheann ar do inrite dénártha, 29 00:01:16,000 --> 00:01:20,000 ní do. c nó. comhaid h cód foinse, 30 00:01:20,000 --> 00:01:23,000 mar sin a bheith cinnte go bhfuil tú le chéile cóip suas chun dáta do chlár 31 00:01:23,000 --> 00:01:25,000 ag baint úsáide as clang nó a dhéanamh. 32 00:01:25,000 --> 00:01:28,000 Ansin, is féidir a reáchtáil do chlár faoi Valgrind a 33 00:01:28,000 --> 00:01:32,000 chomh simplí agus is cóir prefixing an ordaithe clár caighdeán leis an Valgrind focal, 34 00:01:32,000 --> 00:01:35,000 a thosaíonn suas Valgrind agus ritheann an clár taobh istigh de sé. 35 00:01:35,000 --> 00:01:38,000 Nuair a bheidh ag tosú, ní Valgrind roinnt casta 36 00:01:38,000 --> 00:01:41,000 jiggering a chumrú an inrite do na seiceálacha chuimhne, 37 00:01:41,000 --> 00:01:44,000 ionas gur féidir é a chur le beagán a fháil ar bun agus a reáchtáil. 38 00:01:44,000 --> 00:01:48,000 Beidh an clár a fhorghníomhú ansin de ghnáth, go mbeadh sé i bhfad níos moille, 39 00:01:48,000 --> 00:01:52,000 agus nuair a bailchríocha é, beidh Valgrind a phriontáil achoimre ar a úsáide cuimhne. 40 00:01:52,000 --> 00:01:58,000 Má théann gach maith, beidh sé cuma rud éigin mar seo: 41 00:01:58,000 --> 00:02:01,000 Sa chás seo,. / Clean_program 42 00:02:01,000 --> 00:02:04,000 Is é an cosán ar an gclár ba mhaith liom a rith. 43 00:02:04,000 --> 00:02:06,000 Agus cé nach bhfuil an duine a ghlacadh aon argóintí, 44 00:02:06,000 --> 00:02:09,000 más rud é go raibh sé mhaith liom ach tack iad go dtí deireadh an ordaithe mar is gnách. 45 00:02:09,000 --> 00:02:12,000 Tá clár Glan ach clár amaideach beag a chruthaigh mé 46 00:02:12,000 --> 00:02:15,000 go leithdháiltear spás le haghaidh bloc ints ar an gcarn, 47 00:02:15,000 --> 00:02:19,000 chur ar roinnt luachanna taobh istigh díobh, agus FreeS an bloc ar fad. 48 00:02:19,000 --> 00:02:23,000 Tá sé seo cad a bhfuil tú ag lámhach do, aon earráidí agus aon leaks. 49 00:02:23,000 --> 00:02:27,000 >> Eile is ea an méadrach tábhachtach líon iomlán na mbeart a leithdháileadh. 50 00:02:27,000 --> 00:02:32,000 Ag brath ar an gclár, má tá do leithdháiltí san meigibheart nó níos airde, 51 00:02:32,000 --> 00:02:34,000 tú ag déanamh dócha rud éigin mícheart. 52 00:02:34,000 --> 00:02:37,000 An bhfuil a stóráil gan ghá thú dúblaigh? 53 00:02:37,000 --> 00:02:40,000 An bhfuil tú ag baint úsáide an gcarn le haghaidh stórála, nuair a bheadh ​​sé níos fearr a bhaint as an chairn? 54 00:02:40,000 --> 00:02:43,000 Mar sin, is féidir earráidí cuimhne a bheith fíor olc. 55 00:02:43,000 --> 00:02:46,000 Chur faoi deara na cinn níos oscailte tuairteanna iontach, 56 00:02:46,000 --> 00:02:49,000 ach fiú amháin ansin is féidir é a bheith fós deacair a pinpoint 57 00:02:49,000 --> 00:02:51,000 cad é go díreach i gceannas ar an tuairteála. 58 00:02:51,000 --> 00:02:54,000 Níos insidiously, clár a bhfuil earráid cuimhne 59 00:02:54,000 --> 00:02:56,000 Is féidir le chéile go fóill cleanly 60 00:02:56,000 --> 00:02:58,000 Is féidir agus is cosúil go fóill a bheith ag obair i gceart 61 00:02:58,000 --> 00:03:01,000 mar gheall ar bhainistiú tú a fháil t-ádh is mó den am. 62 00:03:01,000 --> 00:03:04,000 Tar éis roinnt "torthaí rathúla," 63 00:03:04,000 --> 00:03:07,000 d'fhéadfá smaoineamh ach go bhfuil timpiste a phucháin ar an ríomhaire, 64 00:03:07,000 --> 00:03:10,000 ach tá riamh ar an ríomhaire mícheart. 65 00:03:10,000 --> 00:03:13,000 >> Is féidir Running Valgrind cabhrú leat rianú síos an chúis na n-earráidí cuimhne le feiceáil 66 00:03:13,000 --> 00:03:18,000 chomh maith le teacht earráidí lurking nach bhfuil tú fiú go fóill ar an eolas faoi. 67 00:03:18,000 --> 00:03:22,000 Gach uair a Valgrind bhraitheann ar fhadhb, priontaí sé eolas faoi cad a breathnaíodh. 68 00:03:22,000 --> 00:03:24,000 Tá gach mír go leor gonta - 69 00:03:24,000 --> 00:03:27,000 an líne foinse an treoir ciontach, cad é an cheist, 70 00:03:27,000 --> 00:03:30,000 agus eolas beag faoi an chuimhne i gceist - 71 00:03:30,000 --> 00:03:34,000 ach is minic tá sé go leor eolais d'aird a dhíriú ar an áit ceart. 72 00:03:34,000 --> 00:03:37,000 Seo sampla de Valgrind a reáchtáil ar chlár Buggy 73 00:03:37,000 --> 00:03:40,000 go ndéanann a léamh neamhbhailí de chuimhne gcarn. 74 00:03:40,000 --> 00:03:49,000 Feicimid aon earráidí nó rabhaidh i thiomsú. 75 00:03:49,000 --> 00:03:53,000 Uh-OH deir an achoimre earráid go bhfuil dhá earráidí - 76 00:03:53,000 --> 00:03:56,000 dhá léann neamhbhailí de mhéid 4 - bytes, is é sin. 77 00:03:56,000 --> 00:04:01,000 Tá an dá olc Léann tharla i phríomhfheidhm invalid_read.c, 78 00:04:01,000 --> 00:04:04,000 an chéad ar líne 16 agus an dara ceann ar líne 19. 79 00:04:04,000 --> 00:04:06,000 Ligean ar breathnú ar an cód. 80 00:04:06,000 --> 00:04:11,000 Breathnaíonn cosúil leis an chéad ghlaoch chun iarracht printf a léamh amháin o am atá caite an deireadh ár bloc cuimhne. 81 00:04:11,000 --> 00:04:13,000 Má fhéachaimid siar ar aschur Valgrind s, 82 00:04:13,000 --> 00:04:16,000 feicimid gur inis Valgrind dúinn go díreach. 83 00:04:16,000 --> 00:04:19,000 Tosaíonn an seoladh táimid ag iarraidh a léamh 0 bytes 84 00:04:19,000 --> 00:04:22,000 anuas ar an deireadh an bhloic ar mhéid 16 bytes - 85 00:04:22,000 --> 00:04:25,000 ceithre 32-giotán ints bhfuil leithdháilte againn. 86 00:04:25,000 --> 00:04:29,000 Is é sin, tosaíonn an seoladh bhí muid ag iarraidh a léamh ar dheis ag an deireadh ár bloc, 87 00:04:29,000 --> 00:04:32,000 díreach mar a fheiceann muid inár glaoch printf dona. 88 00:04:32,000 --> 00:04:36,000 Anois, ní a d'fhéadfadh neamhbhailí léann cosúil mhaith go mór le déileáil, 89 00:04:36,000 --> 00:04:39,000 ach má tá tú ag baint úsáide as na sonraí sin a rialú an sruth do chlár - 90 00:04:39,000 --> 00:04:42,000 mar shampla, mar chuid de más rud é ráiteas nó lúb - 91 00:04:42,000 --> 00:04:45,000 ansin is féidir rudaí a théann go ciúin dona. 92 00:04:45,000 --> 00:04:47,000 Féach ar conas is féidir liom a reáchtáil ar an gclár invalid_read 93 00:04:47,000 --> 00:04:50,000 agus a tharlaíonn aon rud as an gnáth. 94 00:04:50,000 --> 00:04:52,000 Scary, huh? 95 00:04:52,000 --> 00:04:56,000 >> Anois, a ligean ar breathnú ar cineálacha áirithe níos mó de na botúin a d'fhéadfadh a bhíonn tú i do chód, 96 00:04:56,000 --> 00:04:59,000 agus beidh orainn a fheiceáil conas a bhraitheann Valgrind leo. 97 00:04:59,000 --> 00:05:01,000 Chonaic muid ach sampla de invalid_read, 98 00:05:01,000 --> 00:05:04,000 sin in iúl anois ar sheiceáil amach invalid_write. 99 00:05:04,000 --> 00:05:09,000 Arís, níl aon earráidí nó rabhadh i thiomsú. 100 00:05:09,000 --> 00:05:12,000 Maith go leor, a deir Valgrind go bhfuil dhá earráidí sa chlár seo - 101 00:05:12,000 --> 00:05:15,000 agus invalid_write agus invalid_read. 102 00:05:15,000 --> 00:05:18,000 A ligean ar a sheiceáil amach an cód. 103 00:05:18,000 --> 00:05:21,000 Breathnaíonn mhaith againn bhí cás na strlen clasaiceach móide a haon bug. 104 00:05:21,000 --> 00:05:24,000 Ní dhéanann an cód malloc le beart breise de spás 105 00:05:24,000 --> 00:05:26,000 do charachtar / 0, 106 00:05:26,000 --> 00:05:30,000 mar sin nuair a chuaigh str cóip a scríobh sé ag ssubstrlen "cs50 carraigeacha!" 107 00:05:30,000 --> 00:05:33,000 Scríobh sé 1 beart thar an deireadh ár bloc. 108 00:05:33,000 --> 00:05:36,000 Tagann an invalid_read nuair a dhéanamh linn ár glaoch chun printf. 109 00:05:36,000 --> 00:05:40,000 Printf chríochnaíonn suas léamh cuimhne neamhbhailí nuair a léann sé an / 0 carachtar 110 00:05:40,000 --> 00:05:43,000 mar tá sé ag deireadh an teaghrán E tá sé phriontáil. 111 00:05:43,000 --> 00:05:45,000 Ach éalaigh aon cheann de seo Valgrind. 112 00:05:45,000 --> 00:05:48,000 Feicimid gur ghabh sé an invalid_write mar chuid den chóip str 113 00:05:48,000 --> 00:05:51,000 ar líne 11 de is mó, agus is é an invalid_read chuid de printf. 114 00:05:51,000 --> 00:05:54,000 Rock ar, Valgrind. 115 00:05:54,000 --> 00:05:57,000 Arís, ní fhéadfadh sé seo cosúil mhaith le déileáil go mór. 116 00:05:57,000 --> 00:06:00,000 Is féidir linn a reáchtáil an clár seo thar agus os cionn taobh amuigh de Valgrind 117 00:06:00,000 --> 00:06:03,000 agus ní a fheiceáil ar bith comharthaí earráid. 118 00:06:03,000 --> 00:06:06,000 >> Mar sin féin, a ligean ar breathnú ar go mbeadh athrú beag seo a fheiceáil 119 00:06:06,000 --> 00:06:09,000 conas is féidir rudaí a fháil i ndáiríre dona. 120 00:06:09,000 --> 00:06:14,000 , Arna dheonú Mar sin, tá muid rudaí mí-úsáid níos mó ná beagán ach sa chód seo. 121 00:06:14,000 --> 00:06:17,000 Táimid ag dháileadh ach spás ar an gcarn ar feadh dhá teaghráin 122 00:06:17,000 --> 00:06:19,000 fad cs50 carraigeacha, 123 00:06:19,000 --> 00:06:22,000 an am seo, ag cuimhneamh ar an / 0 carachtar. 124 00:06:22,000 --> 00:06:25,000 Ach ansin dúinn a chaitheamh i teaghrán Super-fada isteach an bloc cuimhne 125 00:06:25,000 --> 00:06:27,000 go S dírithe. 126 00:06:27,000 --> 00:06:30,000 Cén éifeacht a bheith aige ar an bloc cuimhne go pointí T a? 127 00:06:30,000 --> 00:06:34,000 Bhuel, má pointí T chun cuimhne go díreach in aice le S, 128 00:06:34,000 --> 00:06:37,000 ag teacht díreach tar éis é, 129 00:06:37,000 --> 00:06:39,000 ansin d'fhéadfadh mór dúinn i scríbhinn os cionn cuid de T. 130 00:06:39,000 --> 00:06:41,000 A ligean ar seo a reáchtáil cód. 131 00:06:41,000 --> 00:06:43,000 Féach ar cad a tharla. 132 00:06:43,000 --> 00:06:47,000 Na teaghráin a stóráil muid inár bloic gcarn araon cosúil go chló amach i gceart. 133 00:06:47,000 --> 00:06:49,000 Ní dhéanfaidh aon ní cosúil go mícheart ar chor ar bith. 134 00:06:49,000 --> 00:06:52,000 Mar sin féin, a ligean ar dul ar ais isteach inár cód agus 135 00:06:52,000 --> 00:06:55,000 trácht a dhéanamh amach an líne nuair a chóipeáil againn cs50 carraigeacha 136 00:06:55,000 --> 00:06:59,000 isteach an bloc cuimhne dara, a léirigh ag t. 137 00:06:59,000 --> 00:07:02,000 Anois, nuair a reáchtáil againn an gcód seo ba chóir dúinn 138 00:07:02,000 --> 00:07:06,000 ach féach an t-ábhar ar an bloc cuimhne chéad phriontáil amach. 139 00:07:06,000 --> 00:07:09,000 Whoa, cé nach raibh muid str cóip 140 00:07:09,000 --> 00:07:12,000 aon carachtair isteach i mbloc gcarn dara, léirigh an ceann ag T, 141 00:07:12,000 --> 00:07:15,000 a fháil againn a phriontáil amach. 142 00:07:15,000 --> 00:07:18,000 Go deimhin, an teaghrán líonta muid isteach inár bloc an chéad 143 00:07:18,000 --> 00:07:21,000 overran an bloc chéad agus an dara bloc, 144 00:07:21,000 --> 00:07:23,000 a dhéanamh gach rud cosúil gnáth. 145 00:07:23,000 --> 00:07:26,000 Valgrind, áfach, insíonn dúinn an scéal fíor. 146 00:07:26,000 --> 00:07:28,000 Tá muid ag dul. 147 00:07:28,000 --> 00:07:32,000 Gach ceann de na neamhbhailí léann scríobhann agus. 148 00:07:32,000 --> 00:07:36,000 >> Ligean ar breathnú ar shampla eile de chineál ar earráid. 149 00:07:36,000 --> 00:07:39,000 Anseo a dhéanann muid rud éigin in áit trua. 150 00:07:39,000 --> 00:07:41,000 Grab muid spás le haghaidh slánuimhir ar an gcarn, 151 00:07:41,000 --> 00:07:45,000 agus táimid thúsú an pointeoir slánuimhir - p - go pointe leis an spás. 152 00:07:45,000 --> 00:07:48,000 Mar sin féin, cé go bhfuil ár n-pointeoir initialized, 153 00:07:48,000 --> 00:07:52,000 na sonraí go tá sé dírithe go bhfuil ach is cuma cén junk go bhfuil sa chuid sin den an gcarn. 154 00:07:52,000 --> 00:07:55,000 Mar sin, nuair a luchtú go bhfuil sonraí i slánuimhir i, 155 00:07:55,000 --> 00:07:57,000 táimid ag thúsú go teicniúil i, 156 00:07:57,000 --> 00:08:00,000 ach a dhéanann muid mar sin le sonraí junk. 157 00:08:00,000 --> 00:08:03,000 An glao a dhearbhú, a bhfuil macra debugging handy 158 00:08:03,000 --> 00:08:06,000 sainithe sa leabharlann aptly ainmnithe dhearbhú, 159 00:08:06,000 --> 00:08:09,000 Beidh tobscoir an gclár má theipeann ar riocht ina tástála. 160 00:08:09,000 --> 00:08:11,000 Is é sin, más rud é nach bhfuil mé 0. 161 00:08:11,000 --> 00:08:14,000 Ag brath ar an méid a bhí sa spás gcarn, a léirigh ag p, 162 00:08:14,000 --> 00:08:18,000 D'fhéadfadh an clár seo ag obair uaireanta agus go dteipeann ag amanna eile. 163 00:08:18,000 --> 00:08:20,000 Má oibríonn sé, tá muid ag dul díreach ádh. 164 00:08:20,000 --> 00:08:24,000 Ní bheidh an tiomsaitheoir ghabháil an earráid seo, ach beidh cinnte Valgrind. 165 00:08:24,000 --> 00:08:28,000 Tá linn a fheiceáil an earráid a eascraíonn as ár n-úsáid na sonraí junk. 166 00:08:28,000 --> 00:08:32,000 >> Nuair a dháileadh tú cuimhne gcarn ach nach GSSAPI é nó í a scaoileadh saor, 167 00:08:32,000 --> 00:08:34,000 go bhfuil ar a dtugtar sceitheadh. 168 00:08:34,000 --> 00:08:37,000 Do chlár, beag gearr-cónaí go ritheann agus díreach bealaí amach, 169 00:08:37,000 --> 00:08:39,000 ligean uisce sách harmless, 170 00:08:39,000 --> 00:08:42,000 ach le haghaidh tionscadal de mhéid níos mó agus / nó fad saoil, 171 00:08:42,000 --> 00:08:46,000 fiú is féidir le sceitheadh ​​beag cumaisc i rud éigin mór. 172 00:08:46,000 --> 00:08:49,000 Chun CS50, a dhéanann muid súil agat a 173 00:08:49,000 --> 00:08:51,000 cúram a ghlacadh de freeing gach ceann de na chuimhne gcarn go leithdháileadh ort, 174 00:08:51,000 --> 00:08:54,000 ós rud é ba mhaith linn leat chun cur leis na scileanna i gceart déileáil leis an bpróiseas láimhe 175 00:08:54,000 --> 00:08:56,000 a cheanglaítear le C. 176 00:08:56,000 --> 00:08:59,000 Chun é sin a, ba chóir do chlár a bhfuil cruinn 177 00:08:59,000 --> 00:09:03,000 duine-le-duine comhfhreagras idir malloc agus glaonna saor in aisce. 178 00:09:03,000 --> 00:09:06,000 Fortunately, is féidir Valgrind cabhrú leat le leaks cuimhne freisin. 179 00:09:06,000 --> 00:09:09,000 Seo clár leaky ar a dtugtar leak.c go leithdháileann 180 00:09:09,000 --> 00:09:13,000 spás ar an gcarn, scríobhann dó, ach ní saor in aisce é. 181 00:09:13,000 --> 00:09:16,000 Táimid thiomsú sé le Déan agus é a reáchtáil faoi Valgrind, 182 00:09:16,000 --> 00:09:18,000 agus feicimid go bhfuil, cé go bhfuil muid earráidí cuimhne ar bith, 183 00:09:18,000 --> 00:09:20,000 a dhéanann muid a bheith ar cheann sceitheadh. 184 00:09:20,000 --> 00:09:23,000 Tá 16 bytes cinnte caillte, 185 00:09:23,000 --> 00:09:27,000 rud a chiallaíonn nach raibh an pointeoir leis an chuimhne i raon feidhme nuair a sendmail an gclár. 186 00:09:27,000 --> 00:09:30,000 Anois, ní Valgrind a thabhairt dúinn a ton eolais i dtaobh an sceite, 187 00:09:30,000 --> 00:09:35,000 ach má leanann muid an nóta beag go dtugann sé síos i dtreo an ghrinnill a thuarascáil 188 00:09:35,000 --> 00:09:38,000 a rerun le - sceitheadh-seiceáil = iomlán 189 00:09:38,000 --> 00:09:41,000 a fheiceáil na sonraí iomlána cuimhne leaked, 190 00:09:41,000 --> 00:09:44,000 beidh orainn a fháil tuilleadh eolais a fháil. 191 00:09:44,000 --> 00:09:46,000 Anois, san achoimre gcarn, 192 00:09:46,000 --> 00:09:50,000 Valgrind insíonn dúinn ina bhfuil an chuimhne a bhí caillte go raibh leithdháileadh ar dtús. 193 00:09:50,000 --> 00:09:52,000 Díreach mar atá a fhios againn ó breathnú ar an cód foinse, 194 00:09:52,000 --> 00:09:55,000 Valgrind iúl dúinn go leaked muid an chuimhne 195 00:09:55,000 --> 00:09:58,000 leithdháilte le glaoch le malloc ar líne 8 de leak.c 196 00:09:58,000 --> 00:10:00,000 san fheidhm is mó. 197 00:10:00,000 --> 00:10:02,000 Pretty nifty. 198 00:10:02,000 --> 00:10:04,000 >> Valgrind categorizes leaks ag baint úsáide as na téarmaí seo: 199 00:10:04,000 --> 00:10:07,000 Cinnte caillte - tá sé seo chuimhne leithdháilte carn 200 00:10:07,000 --> 00:10:10,000 lena mbaineann an clár a thuilleadh a pointeoir. 201 00:10:10,000 --> 00:10:14,000 Valgrind a fhios go raibh tú aon uair amháin an pointeoir ach a chaill ó rian de. 202 00:10:14,000 --> 00:10:17,000 Tá an cuimhne leaked cinnte. 203 00:10:17,000 --> 00:10:20,000 Go hindíreach caillte - tá sé seo chuimhne leithdháilte carn 204 00:10:20,000 --> 00:10:24,000 lena mbaineann an leideanna ach tá sé caillte chomh maith. 205 00:10:24,000 --> 00:10:27,000 Mar shampla, má chaill tú do phointeoir leis an nód chéad liosta nasctha, 206 00:10:27,000 --> 00:10:30,000 ansin bheadh ​​an nód chéad féin a bheith caillte cinnte, 207 00:10:30,000 --> 00:10:34,000 cé go mbeadh aon nóid ina dhiaidh sin a bheith caillte go hindíreach. 208 00:10:34,000 --> 00:10:37,000 B'fhéidir caillte - tá sé seo chuimhne leithdháilte carn 209 00:10:37,000 --> 00:10:41,000 chun nach féidir Valgrind a bheith cinnte an bhfuil pointeoir nó nach bhfuil. 210 00:10:41,000 --> 00:10:44,000 Fós is reachable cuimhne leithdháileadh carn 211 00:10:44,000 --> 00:10:47,000 ar a bhfuil an clár fós pointeoir ag scoir, 212 00:10:47,000 --> 00:10:50,000 rud a chiallaíonn de ghnáth go pointí domhanda athraitheach leis. 213 00:10:50,000 --> 00:10:53,000 Chun seiceáil do na leaks, beidh ort freisin a chur san áireamh an rogha 214 00:10:53,000 --> 00:10:55,000 - Go fóill-reachable = yes 215 00:10:55,000 --> 00:10:58,000 i do agairt Valgrind. 216 00:10:58,000 --> 00:11:01,000 >> D'fhéadfadh na cásanna éagsúla a cheangal ar straitéisí éagsúla chun iad a ghlanadh suas, 217 00:11:01,000 --> 00:11:05,000 ach ba chóir ligean uisce a dhíchur. 218 00:11:05,000 --> 00:11:08,000 Ar an drochuair, is féidir ligean uisce a shocrú a bheith deacair a dhéanamh, 219 00:11:08,000 --> 00:11:11,000 toisc gur féidir glaonna mícheart saor in aisce buille suas do chlár. 220 00:11:11,000 --> 00:11:14,000 Mar shampla, má táimid ar invalid_free.c, 221 00:11:14,000 --> 00:11:18,000 feicimid sampla de deallocation cuimhne dona. 222 00:11:18,000 --> 00:11:21,000 Ba chóir go mbeadh Cad glaoch amháin go saor in aisce ar an bloc ar fad 223 00:11:21,000 --> 00:11:24,000 de chuimhne Luaigh trí int_block, 224 00:11:24,000 --> 00:11:27,000 tar éis éirí ina ionad sin mar iarracht chun saor in aisce gach rannóg o-iarrachtaí 225 00:11:27,000 --> 00:11:29,000 an chuimhne ina n-aonar. 226 00:11:29,000 --> 00:11:32,000 Beidh theipeann tubaisteach. 227 00:11:32,000 --> 00:11:34,000 Boom! Cad botún. 228 00:11:34,000 --> 00:11:36,000 Tá sé seo cinnte nach maith. 229 00:11:36,000 --> 00:11:39,000 Má tá tú bhfostú leis an gcineál seo earráid, áfach, agus nach bhfuil fhios agat nuair a chuardach, 230 00:11:39,000 --> 00:11:41,000 thagann ar ais ar do chara is fearr nua. 231 00:11:41,000 --> 00:11:44,000 Guessed tú é - Valgrind. 232 00:11:44,000 --> 00:11:47,000 Valgrind, mar i gcónaí a fhios, go díreach cad atá ar bun. 233 00:11:47,000 --> 00:11:50,000 Nach bhfuil na comhaireamh leithdháileadh agus saor in aisce mheaitseáil suas. 234 00:11:50,000 --> 00:11:52,000 Táimid iontach fuair 1 leithdháileadh agus 4 FreeS. 235 00:11:52,000 --> 00:11:55,000 Agus insíonn Valgrind dúinn freisin i gcás an chéad ghlaoch saor in aisce dona - 236 00:11:55,000 --> 00:11:58,000 an ceann a tharraing an blowup - ag teacht ó - 237 00:11:58,000 --> 00:12:00,000 líne 16. 238 00:12:00,000 --> 00:12:03,000 Mar a fheiceann tú, tá glaonna olc go saor in aisce i ndáiríre dona, 239 00:12:03,000 --> 00:12:05,000 mar sin molaimid ligean do sceitheadh ​​chlár 240 00:12:05,000 --> 00:12:08,000 fad a bhíonn tú ag obair ar an dul feidhmiúlacht ceart. 241 00:12:08,000 --> 00:12:12,000 Tosú ag lorg i gcomhair sceitheanna ach amháin tar éis do chlár ag obair i gceart, 242 00:12:12,000 --> 00:12:14,000 gan aon earráidí eile. 243 00:12:14,000 --> 00:12:16,000 >> Agus sin ar fad atá againn fuair haghaidh físeán seo. 244 00:12:16,000 --> 00:12:18,000 Anois, cad iad ag fanacht leat do? 245 00:12:18,000 --> 00:12:21,000 Téigh reáchtáil Valgrind ar do chláir ceart anois. 246 00:12:21,000 --> 00:12:25,000 Is é mo ainm Nate Hardison. Is é seo an CS50. [CS50.TV]