[Powered by Google Translate] [Week 5] [David J. Malan - Università ta 'Harvard] [Dan huwa CS50. - CS50.TV] Dan huwa CS50, Week 5. Illum u din il-ġimgħa, aħna jintroduċu xi ftit tad-dinja tal-forensiċi fil-kuntest tal-Problema Set 4. Illum se jkun lecture mqassra għaliex hemm avveniment speċjali fil hawn wara. Allura aħna ser tieħu Peek u tease kemm studenti u ġenituri bl-istess mod llum ma 'wħud mill-affarijiet li huma fuq l-orizzont. Fost dawn, bħala ta 'Tnejn, ser ikollok xi klassi ftit aktar. EDX, Harvard u MIT-inizjattiva online ġodda għall OpenCourseWare u aktar, qed tniedi fuq il-kampus Harvard nhar it-Tnejn, li jfisser come it-tnejn ser ikollok, minn għadd tal-aħħar, 86000 klassi addizzjonali li se jkunu wara flimkien ma 'lezzjonijiet CS50 u l-sezzjonijiet u walkthroughs u settijiet problema. U bħala parti minn dan, inti se jsiru membri tal-klassi inawgurali ta CS50 u issa CS50x. Bħala parti minn dan issa, jirrealizzaw li se jkun hemm xi upsides ukoll. Biex tikseb lesti għal dan, għan-numru kbir ta 'studenti, huwa biżżejjed li jingħad li anke jekk aħna għandna 108 TFS u CAs, huwa pjuttost mhux l-aħjar student għalliem proporzjon darba aħna hit 80000 ta 'l-istudenti. Aħna mhux se tkun problema gradazzjoni tant settijiet manwalment, hekk introduċew din il-ġimgħa fis-sett problema se tkun CS50 Iċċekkja, li se tkun ta 'utilità kmand tal-linja fil-appliance li inti ser tingħata ladarba inti jaġġornaw dan aktar tard dan il-weekend. Int ser tkun kapaċi tmexxi kmand, check50, fuq pset tiegħek, u int ser tieħu rispons immedjat dwar jekk programm tiegħek hija eżatta jew żbaljata skond l-ispeċifikazzjonijiet tad-disinn varji li għandna pprovduti. Aktar dwar dan fl-ispeċifikazzjoni sett problema. Il-klassi CS50x se tuża dan ukoll. Set Problem 4 hija kollha dwar forensika, u dan pset kien verament ispirati minn xi għalf reali tal-ħajja fejn I meta kien fl-iskola gradwati I internati għal waqt bl-uffiċċju Middlesex County Avukat Distrettwali tagħmel xogħol forensika mal investigatur forensika tagħhom ċomb. X'inhu dan ammonta għal, kif naħseb semmejt ftit ġimgħat passat, huwa l-Istat tal-Pulizija tal-massa jew oħrajn kien jidħol fi, huma drop off affarijiet simili hard drives u CDs u floppy disks u simili, u allura l-għan ta 'l-uffiċċju forensika kien li tivverifika jekk kienx hemm jew kienx evidenza ta 'xi tip. Dan kien l-Unità Investigazzjonijiet Speċjali, allura kien jaħdem bil-pinna kriminalità. Kien tip aktar inkwetanti ta 'reati, xi ħaġa li jinvolvu xi tip ta' midja diġitali. Jirriżulta li mhux li ħafna nies jiktbu email qal, "I ma kien." Allura ħafna drabi, dawn it-tfittxijiet forensika ma dawran sa kollha li l-frott ħafna, imma xi kultant in-nies se jikteb emails bħal dawn. Allura xi kultant, l-isforzi kienu ppremjati. Iżda biex iwasslu sa dan pset forensika, aħna ser tkun introdotta fl-pset4 daqsxejn ta 'grafika. Inti probabilment tieħu dawn l-affarijiet għall mogħtija - JPEGs, gifs, u simili - dawn il-jiem. Imma jekk int verament taħseb dwarha, immaġni, ferm simili wiċċ Rob s, tista 'tiġi mmudellata bħala sekwenza ta' tikek jew pixels. Fil-każ ta 'wiċċ Rob s, hemm kull xorta ta' kuluri, u bdejna biex tara l-tikek individwali, magħrufa wkoll bħala pixels, ladarba bdejna li zoom pulzieri Imma jekk aħna simplifikata l-dinja ftit u biss jgħidu li dan hawn huwa Rob bl-iswed u abjad, li jirrappreżentaw iswed u abjad, nistgħu biss użu binarja. U jekk aħna qed tmur għall-użu binarju, 1 jew 0, nistgħu tesprimi din istess immaġini ta 'wiċċ jitbissem Rob ma' dan il-mudell ta 'bits. 11000011 jirrappreżenta abjad, abjad, iswed, iswed, iswed, iswed, abjad, abjad. U għalhekk mhuwiex qabża kbira biex imbagħad jibda jitkellem dwar ritratti ikkuluriti, affarijiet li youd tara fuq Facebook jew jieħdu bil-kamera diġitali. Iżda ċertament meta niġu għall-kuluri, inti għandek bżonn bits aktar. U pjuttost komuni fid-dinja ta 'ritratti huwa l-użu mhux 1-bit kulur, kif dan jissuġġerixxi, iżda 24-bit kulur, fejn inti fil-fatt tikseb miljuni ta 'kuluri. Hekk kif fil-każ meta aħna żżomjati fl fuq għajnejn Rob s, li kien kull numru ta 'miljuni ta' possibbiltajiet ikkuluriti differenti. Allura aħna ser nintroduċu dan Set Problem 4 kif ukoll fil-walkthrough, li se tkun llum fil 03:30 minflok il-soltu 2:30 minħabba lecture nhar il-Ġimgħa hawn. Iżda video se jkun online kif għada soltu. Aħna ser wkoll jintroduċu inti ieħor format tal-fajl. Dan huwa deliberatament maħsub biex tħares intimidanti fl-ewwel, iżda din hija biss xi dokumentazzjoni għal Struct C. Jirriżulta li snin ilu Microsoft għenu popularize dan il-format imsejjaħ il-format tal-fajl Bitmap, BMP, u dan kien super, colorful format sempliċi fajl grafika li ġiet użata għal żmien pjuttost twil u xi kultant xorta għal wallpapers fuq desktops. Jekk taħseb lura għall-Windows XP u l-għoljiet rolling u l-sema blu, li kien tipikament immaġni BMP jew Bitmap. Bitmaps huma divertenti għalina għaliex għandhom kumplessità daqsxejn aktar. Mhuwiex daqshekk sempliċi bħal dan grilja ta 0s u 1s. Minflok, inti għandek affarijiet simili header fil-bidu ta 'fajl. Allura fi kliem ieħor, ġewwa ta 'fajl BMP. Huwa mazz sħiħ ta' 0s u 1s, imma hemm xi 0s addizzjonali u 1s fil hemmhekk. U jirriżulta li dak li aħna ħadthom probabbilment meħud bħala fatt għas-snin - formati tal-fajl bħal. dok jew. xls jew. mp3, mp4., tkun xi tkun il-formati tal-fajl li int familjari ma '- dak ma jfissirx anki biex tkun format tal-fajl, għaliex fl-aħħar tal-ġurnata kollha ta 'dawn il-fajls li nużaw għadek 0s u 1s. U forsi dawk 0s u 1s jirrappreżentaw ABC permezz ASCII jew simili, iżda fl-aħħar tal-ġurnata, huwa għadu biss 0s u 1s. Allura bnedmin biss okkażjonalment tiddeċiedi li jivvintaw format tal-fajl ġdid fejn jistandardizzaw liema mudelli ta 'bits fil-fatt se jfisser. U f'dan il-każ hawnhekk, il-folks li ddisinjati l-format tal-fajl Bitmap qal li fl-ewwel byte fil-fajl Bitmap, kif hemm miktub 0 offset hemmhekk, hemm se jkun hemm xi cryptically imsejjaħ bfType varjabbli imsejħa, li biss stands għal tip fajl Bitmap, liema tip tal-fajl Bitmap hija din. Tista 'jiddeduċi forsi mit-tieni ringiela li jikkumpensaw 2, in-numru byte 2, għandha mudell ta 0s u 1s li tirrappreżenta dak li? Id-daqs ta 'xi ħaġa. U din tmur fuq minn hemm. Għalhekk fl Set Problem 4, inti ser tkun mixi permezz xi wħud minn dawn l-affarijiet. Aħna mhux se jispiċċaw jieħdu ħsieb dwar kull wieħed minnhom. Iżda tinnota li jibda biex tikseb interessanti madwar byte 54: rgbtBlue, Green, u Red. Jekk inti stajt qatt semgħu l-akronimu RGB - aħmar, aħdar, blu - din hija referenza għal dik għaliex jirriżulta li inti tista 'żebgħa l-kuluri tal-qawsalla ma 'xi kombinazzjoni ta' aħmar u blu u ħodor. U fil-fatt, il-ġenituri fil-kamra tista 'lura uħud mill-proġekters kmieni. Dawn il-ġranet, inti biss tara wieħed tad-dawl qawwi li joħorġu ta 'lenti, iżda lura fil-jum li kellu l-lenti aħmar, il-lenti blu, u l-lenti aħdar, u flimkien mmirata lejn l-iskrin u ffurmaw stampa ikkuluriti. U spiss, l-iskejjel tan-nofs u l-iskejjel għolja jkollhom dawk il-lentijiet dejjem hekk ftit askew, sabiex inti kienu it-tip ta 'tara immaġini doppja jew trippla. Iżda li kien l-idea. Kellek dawl aħmar u aħdar u blu pittura stampa. U li l-istess prinċipju huwa użat fil-kompjuters. Allura fost l-isfidi imbagħad għalik fl Problema Set 4 ser ikunu ftit affarijiet. Wieħed huwa li attwalment resize 'immaġni, li jieħu fil-mudell ta 0s u 1s, figura li biċċiet ta '0s u 1s jirrappreżentaw dak fi struttura bħal din, u mbagħad figura kif tiġi replikata l-pixels - l-ħomor, blu, l-il-ħodor - ġewwa b'tali mod li meta stampa tidher bħal dan fil-bidu, li tista 'tidher bħal dan minflok wara dik. Fost l-isfidi oħra wisq se tkun li inti ser tingħata xbieha forensika ta 'fajl attwali minn kamera diġitali. U fuq din camera, ladarba fuq żmien, kienu mazz sħiħ ta 'ritratti. Il-problema hija li aħna aċċidentalment mħassra jew kellha l-immaġini korrotta b'xi. Affarijiet ħżiena jiġri bil-kameras diġitali. U hekk aħna malajr kkupjati kollha ta 'l-off 0s u 1s ta dik il-karta għalik, iffrankat lilhom kollha f'fajl wieħed kbir, u mbagħad aħna ser jgħadduhom lilek Problem Set 4 sabiex inti tista 'tikteb programm C li biex jirkupraw kollha ta' dawk JPEGs, idealment. U jirriżulta li JPEGs, anki jekk dawn qed kemmxejn ta 'format tal-fajl kumpless - dawn qed ħafna aktar kumplessi minn dan il-wiċċ jitbissem hawn - jirriżulta li kull JPEG jibda bil-mudelli istess 0s u 1s. Hekk billi tuża, finalment, linja waqt jew għall loop jew simili, inti tista 'ttenni fuq l-0s u 1s fil din id-dehra forensika, u kull darba li inti tara l-mudell speċjali li l-definit fl-ispeċifikazzjoni sett problema, inti tista 'tassumi hawnhekk hija, bi probabbiltà għolja ħafna, il-bidu ta' JPEG. U hekk kif inti ssib l-istess mudell xi numru ta 'bytes jew kilobytes jew megabytes aktar tard, inti tista 'tassumi hawnhekk huwa JPEG 2, -ritratt I ħa wara l-ewwel waħda. Let me tieqaf qari dan il-fajl ewwel, tibda bil-miktub dan wieħed ġdid, u l-produzzjoni tal-programm tiegħek għall pset4 se tkun daqs 50 JPEGs. U jekk mhuwiex 50 JPEGs, ikollok daqsxejn ta 'linja. Jekk għandek numru infinit ta 'JPEGs, għandek loop infinita. Allura li wisq se jkun pjuttost każ komuni. Allura dak x'hemm fuq l-orizzont. Quiz 0 warajna, tirrealizza kull email tiegħi li kostantement hemm folks li huma kemm kuntenti, tip ta 'newtrali, u diqa madwar kwizz 0 iż-żmien. U jekk jogħġbok jilħqu lili, il-Zamyla ras TF, TF tiegħek, jew wieħed mill-CAs li inti tkun taf jekk inti tixtieq tiddiskuti kif l-affarijiet marru. Allura biex jimpressjonaw lill-ġenituri hawn fil-kamra, liema huwa l-librerija CS50? [Rires] Tajba tax-xogħol. X'hemm-librerija CS50? Yeah. >> [Student] Huwa sett pre-miktub tal-kodiċi [inaudible] Okay, tajba. Huwa sett pre-miktub tal-kodiċi li aħna l-persunal kiteb, nipprovdu lilek, li jipprovdi xi funzjonalità komuni, Jittieħed bħal nikseb me string, jiksbu me int - kollha tal-funzjonijiet li huma elenkati hawn. Bidu issa, nibdew biex verament jieħdu dawn ir-roti ta 'taħriġ off. Aħna qed tmur biex tibda tieħu l bogħod string mill inti, li jfakkru kien biss sinonimu għal liema tip ta 'data attwali? >> [Studenti multipli] Char *. Char *. Għall-ġenituri, li kien probabbilment [jagħmilha ħoss whooshing]. Li tajjeb. * Char aħna ser tibda tara fuq l-iskrin l-aktar kif aħna tneħħi string minn vokabularju tagħna, mill-inqas meta niġu biex effettivament tikteb kodiċi. Bl-istess mod, aħna ser tieqaf tuża xi wħud minn dawn il-funzjonijiet kemm għaliex programmi tagħna huma se tikseb aktar sofistikati. Pjuttost milli sempliċiment jiktbu programmi li tiltaqa hemm ma 'Teptip fil-pront, stennija għall-utent tat-tip xi ħaġa, int ser tingħata inputs tiegħek minn x'imkien ieħor. Per eżempju, inti ser tingħata lilhom minn serje ta 'bits fuq il-hard drive lokali. Int ser minflok tikseb minnhom fil-futur minn konnessjoni tan-netwerk, xi websajt x'imkien. Mela ejja qoxra lura dan is-saff għall-ewwel darba u iġbed il-Appliance CS50 u dan il-fajl imsejħa cs50.h, li inti kont qed # inkluż għal ġimgħat, imma ejja attwalment tara x'hemm ġewwa ta 'dan. Il-quċċata tal-fajl fil-blu huwa biss mazz sħiħ ta 'kummenti: informazzjoni garanzija u l-liċenzjar. Din hija tip ta 'paradigma komuni fis-software minħabba ħafna ta 'softwer dawn il-jiem huwa dak li sejjaħ sors miftuħ, li jfisser li xi ħadd kiteb il-kodiċi u għamilha disponibbli liberament mhux biss biex imexxu u għall-użu iżda li fil-fatt taqra u tbiddel u jintegraw fil-ħidma tiegħek. Allura dak hu li inti kont qed tuża, softwer open source, għalkemm f'forma żgħir ħafna. Jekk I iscroll passat l-kummenti, għalkemm, aħna ser tibda tara xi affarijiet aktar familjari. Avviż fil-quċċata hawnhekk li l-fajl cs50.h jinkludi mazz sħiħ ta 'fajls header. Ħafna minn dawn, ma rajniex qabel, iżda wieħed huwa familjari. Liema minn dawn ma rajna, għalkemm fil-qosor, s'issa? >> [Student] librerija Standard. Yeah, librerija standard. stdlib.h għandha malloc. Ladarba bdejna nitkellmu dwar l-allokazzjoni memorja dinamika, li aħna ser terga 'lura għal ġimgħa d-dieħla kif ukoll, bdejna inkluż dan il-fajl. Jirriżulta li bool u vera u falza fil-verità ma jeżistux fis-C per se sakemm inti jinkludu dan il-fajl hawn. Aħna għal ġimgħat ġew inklużi stdbool.h sabiex inti tista 'tuża l-kunċett ta'. bool, vera jew falza Mingħajr dan, inti għandek sort ta foloz u l-użu ta 'int u biss arbitrarju wieħed jassumi li hija falza 0 u 1 huwa veru. Jekk aħna iscroll aktar, hawnhekk hija definizzjoni tagħna ta 'sekwenza. Jirriżulta, kif aħna stajt qal qabel, li fejn dan il stilla huwa ma verament kwistjoni. Tista 'anki jkollha spazju kollha madwar. Aħna dan is-semestru ġew promozzjoni tagħha kif dan jiġi ċċarat li l-istilla għandha tagħmel mat-tip, imma tirrealizza daqstant komuni, jekk mhux ftit aktar komuni, huwa li tqiegħed lilha hemmhekk, iżda funzjonalment hija l-istess ħaġa. Imma issa jekk naqraw tinżel aktar, ejja tagħti ħarsa lejn GetInt għaliex aħna użati li forsi l-ewwel qabel kull ħaġ'oħra dan is-semestru. Hawnhekk huwa GetInt. Dan huwa dak? >> [Student] A prototip. >> Dan huwa biss prototip. Ħafna drabi, aħna poġġew prototipi fuq l-uċuħ ta 'tagħna. Fajls c, imma int tista 'wkoll tpoġġi prototipi fil-fajls header,. fajls h, bħal dan wieħed hawn b'tali mod li meta tikteb xi funzjonijiet li inti tixtieq nies oħra li jkunu jistgħu jużaw, li huwa eżattament il-każ ma 'l-librerija CS50, inti mhux biss jimplimentaw il-funzjonijiet tiegħek fil xi ħaġa simili cs50.c, inti wkoll tpoġġi l-prototipi mhux fil-quċċata ta 'dan il-fajl, iżda fil-quċċata ta' fajl header. Imbagħad dan il-fajl header huwa dak ħbieb u kollegi jinkludu ma # Jinkludu fil-kodiċi tagħhom stess. Allura dan il-ħin, inti kont qed inkluż kollha ta 'dawn prototipi, effettivament fil-quċċata tal-fajl tiegħek imma permezz ta 'dan # jinkludu mekkaniżmu, li essenzjalment kopji u pejsts dan il-fajl fis tiegħek. Hawn xi dokumentazzjoni pjuttost dettaljata. Imxejna pjuttost ħafna meqjusa illi GetInt gets int, iżda jirriżulta hemm xi każijiet kantuniera. X'jiġri jekk l-utent tipi f'numru li l-mod wisq kbir, quintillion, li għadha ma jistgħux jitwaħħlu ġewwa ta 'int? X'inhu l-imġieba mistennija? Idealment, huwa prevedibbli. Allura f'dan il-każ, jekk inti fil-fatt taqra l-istampar multa, inti ser fil-fatt tara li jekk il-linja ma tistax tinqara, dan INT_MAX prospetti. Imxejna qatt tkellem dwar dan, iżda bbażata fuq kapitalizzazzjoni tagħha, dak li huwa probabbilment? [Student] A kostanti. >> Huwa kostanti. Huwa xi kostanti speċjali li probabbilment ddikjarat f'wieħed minn dawn il-fajls header li f'idejn ogħla fil-fajl, u INT_MAX huwa probabbilment xi ħaġa simili madwar 2 biljun, l-idea hija li għaliex għandna bżonn li b'xi mod turi li xi ħaġa marret ħażin, aħna, iva, għandna 4000000000 numri għad-dispożizzjoni tagħna: -2 biljun sa 2 biljun, jagħtu jew jieħu. Ukoll, dak li huwa komuni fl-ipprogrammar huwa inti steal biss wieħed minn dawk in-numri, forsi 0, forsi 2 biljun, forsi -2000000000, sabiex inti tqatta wieħed mill-valuri possibbli tiegħek sabiex inti tista jimpenjaw ruħhom li d-dinja li jekk xi ħaġa tmur ħażin, I se terġa 'lura dan il-valur kbir super. Imma inti ma tridx l-utent ittajpjar xi ħaġa cryptic bħal 234 ..., numru verament kbir. You tiġġeneralizza dan minflok bħala kostanti. Allura verament, jekk inti kienu qed anali-aħħar ftit ġimgħat, kull darba li inti imsejħa GetInt, inti għandek ġew verifika ma 'jekk il-kundizzjoni ma-tip utent fil INT_MAX, jew, aktar speċifikament, ma INT_MAX ritorn GetInt, għaliex jekk hija għamlet, li effettivament tfisser li huma ma tip li. Xi ħaġa li marret ħażin f'dan il-każ. Allura dan huwa dak li ġeneralment magħrufa bħala valur sentinella, li sempliċiment ifisser speċjali. Ejja issa għandha ddur lejn il-fajl c.. Il-fajl C ilha teżisti fl-appliance għal xi żmien. U fil-fatt, l-appliance għandu dan pre-ikkumpilata għall inti fis-ħaġa li aħna imsejjaħ kodiċi ta 'oġġett, iżda hija biss ma jimpurtax li inti fejn huwa għaliex is-sistema jaf f'dan il-każ fejn hija: l-appliance. Ejja iscroll issa biex GetInt u tara kif GetInt ilha taħdem dan il-ħin. Hawnhekk għandna l-kummenti simili minn qabel. Let me zoom fl fuq biss il-porzjon kodiċi. U dak li għandna għall GetInt hija din li ġejja. Huwa jieħu l-ebda input. Dan jirritorna int, filwaqt li (veru), hekk aħna loop infinita intenzjonat, imma preżumibbilment aħna ser break out ta 'dan b'xi mod jew jirritornaw minn ġewwa dan. Ejja naraw kif taħdem din. Aħna jidhru li qiegħdin jużawh GetString f'dan il-linja 1 ġewwa l-linja, 166. Dan issa huwa prattika tajba għaliex taħt liema ċirkustanza jirritornaw GetString jistgħu il NULL speċjali keyword? >> [Student] Jekk xi ħaġa tmur ħażin. Jekk xi ħaġa tmur ħażin. U dak li jista 'tmur ħażin meta inti sejħa xi ħaġa bħal GetString? Yeah. >> [Student] malloc jonqos milli tagħtiha l-ints. Yeah. Jonqos malloc Forsi. X'imkien taħt il-barnuża, GetString qed titlob malloc, li jalloka memorja, li tikri l-maħżen tal-kompjuter kollha tal-karattri li l-utent tipi fil-keyboard. U jissoponi l-utent kellhom lott kollu ta 'ħin liberu u ittajpjat aktar, per eżempju, minn 2 biljun karattri fit-karattri aktar milli l-kompjuter anki għandha RAM. GetString għandha tkun tista 'turi dak li int. Anki jekk dan huwa, super każ super kantuniera mhux komuni, għandu b'xi mod ikunu jistgħu jimmaniġġjaw dan, u hekk GetString, jekk aħna marru lura u aqra d-dokumentazzjoni, ma fil NULL ritorn fatt. Mela issa jekk GetString jonqos billi jirritorna NULL, GetInt se jonqsu billi jirritorna INT_MAX biss bħala sentinella. Dawn huma biss konvenzjonijiet tal-bniedem. L-uniku mod inti taf li dan huwa l-każ huwa billi taqra l-dokumentazzjoni. Ejja iscroll isfel sa fejn l-INT huwa attwalment gotten. Jekk I iscroll daqsxejn aktar, f'konformità 170, aħna għandna kumment fuq dawn il-linji. Aħna niddikjaraw b'mod 172 ta int, n, u char, c, u mbagħad din il-funzjoni l-ġdida, li xi wħud minnkom stumbled madwar qabel, sscanf. Dan stands għall scanf sekwenza. Fi kliem ieħor, tagħti me a string u jien se scan għall-biċċiet ta 'informazzjoni ta' interess. X'ifisser dan? Ejja ngħidu li jien tip, litteralment, 123 fuq il-keyboard u mbagħad hit Ikteb. X'inhu t-tip tad-data ta 'meta 123 ritornati mill GetString? >> [Student]. String Huwa ovvjament string, id-dritt? Sibt string. Allura 123 huwa verament, kwotazzjoni-unquote, 123 bl-0 \ fl-aħħar ta 'dan. Dan mhuwiex int. Li mhux numru. Jidher qisu numru iżda mhux attwalment. Allura dak li ma GetInt għandek tagħmel? Għandu scan li string xellug għal-lemin - 123 \ - 0 u b'xi mod jikkonvertu għall integer attwali. Inti tista 'figura kif jagħmlu dan. Jekk taħseb lura pset2, inti preżumibbilment ltqajna ftit komdi Caesar jew Vigenere, sabiex inti tista 'jtenni fuq string, inti tista' tikkonverti Chars li ints. Iżda Heck, huwa lott kollu ta 'xogħol. Għaliex ma sejħa funzjoni bħal sscanf li ma li għalik? Allura sscanf jistenna argument - f'dan il-każ imsejħa linja, li hija sekwenza. Inti mbagħad tispeċifika kwotazzjonijiet, simili ħafna għal printf, dak li inti tistenna li tara fil din is-sekwenza. U dak li jien tgħid hawnhekk huwa I jistennew li jaraw numru deċimali u forsi karattru. U aħna ser tara għaliex dan huwa l-każ fi ftit mument. U jirriżulta li din notazzjoni issa huwa reminixxenti ta 'għalf bdejna nitkellmu dwar ftit aktar minn ġimgħa ilu. X'inhu & nu & c tagħmel għalina hawn? >> [Student] Indirizz ta 'n u l-indirizz ta' c. Yeah. Huwa jagħti me l-indirizz ta 'n u l-indirizz ta' c. Għaliex huwa importanti li? Inti taf li ma 'funzjonijiet fis-C, inti tista' dejjem terġa 'lura għal valur jew l-ebda valur fil-livelli kollha. Tista 'ritorn ta' int, string, float, a char, tkun xi tkun, jew tista 'tirritorna null, imma int tista 'biss jirritorna ħaġa waħda maximally. Imma hawn irridu sscanf jirritornaw lili forsi int, numru deċimali, u wkoll. char, u jien ser jispjegaw għaliex il-karatteristiċi fil-mument Inti effettivament tixtieq sscanf jirritornaw żewġ affarijiet, iżda li biss mhux possibbli C. Tista 'taħdem madwar li billi tgħaddi f'żewġ indirizzi għaliex malli inti idejn funzjoni żewġ indirizzi, dak li jista 'dik il-funzjoni tagħmel magħhom? >> [Student] Ikteb lill dawk l-indirizzi. Hija tista 'tikteb lill dawk l-indirizzi. Tista 'tuża l-operazzjoni star u jmorru hemm, għal kull waħda minn dawk l-indirizzi. Huwa tip ta 'dan il-mekkaniżmu ta' back-bieb iżda komuni ħafna għat-tibdil tal-valuri tal-varjabbli aktar minn waħda biss post - f'dan il-każ, tnejn. Issa avviż jien iċċekkjar għall == 1 u mbagħad jirritornaw n jekk dan ma, fil-fatt, tevalwa l-vera. Allura x'inhu għaddej? Teknikament, kollox aħna verament irridu li jiġri GetInt hija din. Aħna rridu li parse, biex ngħidu hekk, irridu taqra l-string - kwotazzjoni-unquote 123 - u jekk jidher qisu hemm numru hemmhekk, dak li aħna qed javżak sscanf tagħmel jitqiegħed dak in-numru - 123 - f'dan il-varjabbli n għalija. Allura għaliex imbagħad ma I attwalment ikollhom dan ukoll? X'inhu r-rwol tal sscanf tgħid inti tista 'wkoll tikseb karattru hawn? [Rispons istudent inaudible] >> A punt deċimali attwalment jistgħu jaħdmu. Ejja istiva li ħasbu għal mument. X'aktar? [Student] Jista 'jkun NULL. >> Good ħsieb. Dan jista 'jkun il-karattru null. Huwa fil-fatt mhux il-każ. Yeah. >> [Student] ASCII. ASCII. Jew let me tiġġeneralizza anke aktar. Il c% hemm biss għall-verifika ta 'żball. Aħna ma rridux li jkun hemm karattru wara n-numru, imma dak li din tippermetti lili biex tagħmel huwa dan li ġej. Jirriżulta li sscanf, minbarra ħażna valuri nu ċ f'dan l-eżempju hawn, dak li wkoll ma huwa jirritorna l-għadd ta 'varjabbli li tpoġġi valuri pulzieri Mela jekk inti biss tip fil 123, allura biss il-% d huwa se jaqblu, u biss n gets maħżuna b'valur bħall 123, u xejn gets jitqiegħdu c. C tibqa 'valur żibel, biex ngħidu hekk - żibel għaliex dan huwa qatt ma kien initialized sa ċertu valur. Allura f'dak il-każ, sscanf prospetti 1 minħabba I popolati 1 ta 'dawk pointers, f'liema każ kbira, I jkollhom int so I ħielsa l-linja biex tillibera l-memorja li GetString attwalment allokati, u mbagħad I lura n, inkella jekk inti qatt staqsiet fejn dik id-dikjarazzjoni Retry ġej minn, ikun ġej minn dritt hawn. Mela jekk, għall-kuntrarju, jien tip 123foo - biss ftit sekwenza każwali ta 'test - sscanf se tara, in-numru, numru, f, u li għaddej biex tpoġġi l-123 fl-n; li għaddej biex tpoġġi l-f f'c u mbagħad jirritornaw 2. Allura aħna għandna, biss bl-użu tad-definizzjoni bażika ta 'l-imġiba sscanf, il-mod sempliċi ħafna - ukoll, kumpless ewwel daqqa t'għajn iżda fl-aħħar tal-ġurnata mekkaniżmu pjuttost sempliċi - ta 'tgħid hemm xi int u jekk iva, huwa li l-unika ħaġa li sibt? U l-whitespace hawn huwa intenzjonat. Jekk taqra d-dokumentazzjoni għall-sscanf, hija jgħidlek li jekk inti jinkludu biċċa whitespace fil-bidu jew fl-aħħar, sscanf wisq se jippermettu lill-utent, għal kwalunkwe raġuni, hit 123 bar-ispazju u li se jkun leġittimu. Inti mhux se Yell fil-utent sempliċiment għax laqat il-bar-ispazju fil-bidu jew fl-aħħar, li huwa biss ftit aktar faċli għall-utent. Kwalunkwe mistoqsijiet imbagħad fuq GetInt? Yeah. >> [Student] X'jiġri jekk inti biss jitqiegħed fil-char? Good kwistjoni. X'jiġri jekk inti biss ittajpjat fil-char bħal f u hit Ikteb mingħajr qatt ittajpjar 123? What do you think-imġieba ta 'din il-linja tal-kodiċi mbagħad ikunu? [Rispons istudent inaudible] Yeah, hekk sscanf tista 'tkopri li wisq għaliex f'dak il-każ, mhuwiex ser timla n jew c. Huwa ser minflok jirritornaw 0, f'liema każ jien ukoll qbid li x-xenarju minħabba li l-valur mistenni nixtieq huwa 1. I jridux biss wieħed u wieħed biss ħaġa li għandha timtela. Good kwistjoni. Oħrajn? Kull dritt. Ejja ma jgħaddu kollha ta 'funzjonijiet fil hawn, iżda l-waħda li jidher li jkun forsi ta 'interess li jifdal huwa GetString għaliex jirriżulta li GetFloat, GetInt, GetDouble, GetLongLong kollha Punt ħafna ta 'funzjonalità tagħhom li GetString. Mela ejja tagħti ħarsa lejn kif huwa implementat hawnhekk. Dan wieħed jistenna kumpless ftit, iżda hija tuża l-elementi fundamentali istess li bdejna nitkellmu ġimgħa li għaddiet. Fil GetString, li tieħu l-ebda argument bħala kull l-vojt up here u dan jirritorna string, I am apparentement tiddikjara string imsejjaħ buffer. I ma verament jafu dak li għaddej biex jintużaw għal għada, iżda Ser naraw. Jidher qisu kapaċità hija fil-kontumaċja 0. Mhux pjuttost ċert fejn dan ikun għaddej, mhuwiex ċert liema n se jintużaw għal għada, iżda issa huwa jkollna ftit aktar interessanti. F'konformità 243, aħna jiddikjaraw int, c. Dan huwa tip ta 'dettall stupid. A char huwa 8 bits, u 8 bits jista 'jaħżen kemm valuri differenti? >> [Student] 256. >> 256. Il-problema hija jekk inti tixtieq li jkollok 256 karattri ASCII differenti, li hemm jekk taħseb lura - u dan mhux xi ħaġa li memorize. Imma jekk inti taħseb lura għal dak chart ASCII big kellna ġimgħat ilu, kien hemm f'dak il-każ 128 jew 256 karattri ASCII. Aħna użati l-mudelli ta 'l 0s u 1s. Li l-problema jekk inti tixtieq li tkun kapaċi jikxef żball għaliex jekk int diġà tuża 256 Valuri għall-karattri tiegħek, inti ma verament tippjana għal quddiem għaliex issa ikollok ebda mod ta 'tgħid, din mhix karattru leġittimu, din hija xi messaġġ żbaljat. Allura dak id-dinja ma huwa huma jużaw l-valur li jmiss akbar, xi ħaġa bħal int, hekk li għandek numru ta 'bits crazy, 32, għal 4000000000 valuri possibbli sabiex inti tista 'sempliċement tispiċċa bl-użu essenzjalment 257 minnhom, 1 tiegħu għandha xi tifsira speċjali bħala żball. Mela ejja ara kif taħdem din. F'konformità 246, għandi din loop filwaqt kbir li qed titlob fgetc, f tifsira fajl, hekk getc, u mbagħad stdin. Jirriżulta li dan huwa biss il-mod aktar preċiż ta 'tgħid taqra l-input mill-keyboard. Standard keyboard mezz input, output standard ifisser iskrin, u żball standard, li aħna ser tara fil pset4, tfisser l-iskrin iżda parti speċjali tal-iskrin sabiex li mhuwiex conflated bi produzzjoni attwali li inti maħsuba għall-istampar. Iżda aktar fuq dan fil-futur. Allura fgetc ifisser biss aqra karattru wieħed mill-keyboard u jaħżnu fejn? Aħżen fil-c. U mbagħad tiċċekkja - hekk jien biss jużaw xi konġunzjonijiet Boolean hawn - jivverifikaw li dan ma jkunx ugwali - \ n, sabiex l-utent ikun hit Ikteb, irridu jieqfu f'dak il-punt, tmiem tal-linja - u aħna wkoll jridu jiċċekkjaw għall-EOF kostanti speċjali, li jekk taf jew raden, dak ma toqgħod għal? >> [Student] Tmiem tal-fajl. Tmiem >> tal-fajl. Dan huwa tip ta 'jagħmel ebda sens għaliex jekk jien ittajpjar fuq it-tastiera, hemm verament ebda fajl involuti f'dan, iżda dan huwa biss tip tat-terminu ġeneriku użat biex ifisser li xejn ikun ġej minn swaba tal-bniedem tal-. EOF - aħħar ta 'fajl. Bħala twarrib, jekk inti stajt qatt hit Kontroll D fil-tastiera tiegħek, mhux li inti jkollok s'issa - inti stajt hit Kontroll C - Kontroll D tibgħat dan il-kostanti speċjali msejħa EOF. Allura issa aħna biss għandhom xi allokazzjoni memorja dinamika. Mela jekk (n + 1> kapaċità). Issa jien ser jispjegaw n. N huwa biss kemm bytes bħalissa qegħdin fil-buffer, l-sekwenza li int bħalissa bini mill-utent. Jekk għandek karattri aktar fil buffer tiegħek milli għandek kapaċità fil-buffer, intuwittivament dak li għandna bżonn tagħmel allura hu jalloka aktar kapaċità. Allura jien ser skim fuq xi wħud mill-aritmetika hawn u tiffoka biss fuq din il-funzjoni hawn. Inti taf huwa malloc liema jew huma għall-inqas ġeneralment familjari. Ħu raden ma realloc dak. >> [Student] Iżid memorja. Huwa pjuttost mhux żżid memorja. Hija reallocates memorja kif ġej. Jekk ikun hemm għadu kamra fl-aħħar tas-sekwenza biex jagħtuk aktar ta 'dak memorja milli oriġinarjament tagħtik, allura inti ser tingħata li l-memorja addizzjonali. Allura inti tista 'sempliċement iżommu tqegħid karattri tal-string ta konsekuttivament lura lura. Imma jekk dan mhux il-każ għaliex inti stenniet twil wisq u xi ħaġa każwali ltqajna plopped fil-memorja hemm iżda hemm memorja żejda stabbiliti hawn, li okay. Realloc se jagħmlu l-irfigħ għalik, jċaqalqu l-sekwenza li inti stajt taqra fil s'issa minn hawn, poġġih stabbiliti hemmhekk, u mbagħad jagħtuk runway ftit aktar f'dak il-punt. Allura bil-mewġa ta 'l-idejn, ħalluni ngħid li dak li qed tagħmel GetString huwa huwa li tibda bi buffer żgħir, forsi karattru wieħed wieħed, u jekk l-utent tipi f'żewġ karattri, GetString jispiċċa ssejjaħ realloc u jgħid karattru wieħed ma kienx biżżejjed; tagħti me żewġ karattri. Imbagħad jekk inti taqra permezz tal-loġika tal-linja, li għaddej biex ngħid l-utent ttajpjata 3 ittri; agħtini issa mhux 2 iżda 4 karattri, imbagħad tagħti me 8, allura agħti lili 16 u 32. Il-fatt li jien irduppjar tal-kapaċità kull darba ifisser li l-buffer mhux se jikber bil-mod, li għaddej biex jikbru super fast. U dak li jista 'jkun il-vantaġġ ta' dan? Why am I irduppjar-daqs tal-buffer anki jekk l-utent jista 'biss jeħtieġ karattru wieħed żejda mill-keyboard? [Inaudible student rispons] >> X'hemm li? >> [Student] Inti ma għandekx biex jikbru bħala spiss. Eżattament. Inti ma għandekx biex jikbru bħala spiss. U dan huwa biss tip ta 'int hedging imħatri tiegħek hawn, l-idea hija li inti ma tridx li sejħa realloc ħafna minħabba li hemm tendenza li jkun bil-mod. Kwalunkwe ħin li inti titlob lill-sistema operattiva għall-memorja, kif inti ser malajr tara fil-sett problema fil-futur, li għandha tendenza li tieħu ftit ħin. Allura timminimizza dak l-ammont ta 'żmien, anki jekk int wasting xi spazju, tendenza li tkun ħaġa tajba. Imma jekk aħna tinqara minn ġol-parti finali tal GetString hawn - u għal darb'oħra fehim kull linja waħda hawn mhix daqshekk importanti llum - avviż li eventwalment tappella malloc mill-ġdid u jalloka eżattament kif bytes ħafna kif jeħtieġ l-sekwenza u mbagħad throws bogħod billi ċċempel b'xejn tal-buffer eċċessivament kbir jekk tabilħaqq ltqajna rdoppja wisq drabi. Allura fil-qosor, li kif GetString ilha taħdem dan il-ħin. Kollha li ma jinqara karattru wieħed fi żmien ġdid u għal darb'oħra u għal darb'oħra, u kull darba li jeħtieġ xi memorja addizzjonali, huwa jitlob lill-sistema operattiva għal dan billi ċċempel realloc. Kwalunkwe mistoqsijiet? Kull dritt. An attakk. Issa li aħna nifhmu pointers jew għall-inqas huma dejjem aktar familjari ma 'pointers, ejja tikkunsidra kif id-dinja kollha jibda kollass jekk inti ma pjuttost jiddefendu kontra l-utenti kontradittorji, nies li qed jippruvaw Hack fis-sistema tiegħek, nies li qed jippruvaw steal software tiegħek billi tevita xi kodiċi ta 'reġistrazzjoni li kieku kienu għandek tip pulzieri Agħti ħarsa lejn dan l-eżempju hawn, li huwa biss il-kodiċi C li għandu funzjoni ewlenija fil-qiegħ li jitlob funzjoni foo. U dak hu li tgħaddi lill foo? [Student] Argument wieħed. >> [Malan] Argument wieħed. Allura ARGV [1], li jfisser l-ewwel kelma li l-utent ittajpjat fil-linja tal-kmand wara a.out jew ikun x'ikun l-programm huwa msejjaħ. Allura foo fil-quċċata jieħu fil-* char. Iżda * char huwa biss dak? >> [Student] A sekwenza. [Malan] A string, b'hekk m'hemm xejn ġdid hawn. Dan sekwenza huwa arbitrarjament qed jissejjaħ bar. F'dan il-linja hawn, char ċ [12]; fil-tip ta 'semi-teknika Ingliż, dak li huwa din il-linja tagħmel? [Student] Firxa ta '- Array >> ta'? >> [Student] Karattri. >> Karattri. Agħti me firxa ta '12-il karattru. Allura nistgħu sejħa dan buffer. Huwa teknikament jissejjaħ c, ​​iżda buffer fl-ipprogrammar ifisser biss mazz ta 'spazju li inti tista 'tpoġġi xi Jittieħed pulzieri Imbagħad fl-aħħar, memcpy konna ma jintużawx qabel, imma int tista 'probabbilment raden dak li tagħmel. Hija kopji memorja. X'tikkontrolla do? Hija apparentement kopji bar, input tagħha, fis c iżda biss sa l-tul ta 'bar. Iżda hemm bug hawn. >> [Student] Għandek bżonn l-karattru sizeof. Okay. >> Teknikament, għandna verament strlen (bar) * sizeof (char)). Li korretta. Iżda fl-agħar każ hawnhekk, ejja nassumu li that's - Okay. Imbagħad hemm 2 bugs. Allura sizeof (char)); Ejja jagħmlu dan ftit aktar wiesa '. Allura issa hemm għadu bug, li huwa dak? >> [Rispons istudent inaudible] Iċċekkja għal liema? >> [Student] Iċċekkja għall NULL. Għandna ġeneralment kontroll għal NULL għaliex affarijiet ħżiena jiġri meta pointer tiegħek huwa NULL għaliex inti tista 'tispiċċa tmur hemmhekk, u inti ma għandhom qatt ikunu ser null billi dereferencing ma 'l-operatur stilla. Allura li tajjeb. U x'iktar li qed nagħmlu? Loġikament, hemm difett hawnhekk ukoll. [Student] Iċċekkja jekk argc huwa> = sa 2. Sabiex jiċċekkjaw jekk argc huwa> = 2. Okay, hekk hemm 3 bugs f'dan il-programm hawn. Aħna issa iċċekkjar jekk l-utent fil-fatt ittajpjat fil xejn fil ARGV [1]. Tajba. Allura x'inhu l-bug terz? Yeah. >> [Student] C jista 'ma jkun kbir biżżejjed. Tajba. Aħna ċċekkjati xenarju wieħed. We impliċitament ċċekkjati ma kopja memorja aktar milli kien jaqbeż it-tul ta 'bar. Allura jekk il-sekwenza l-utent ittajpjat fil hija 10 karattri fit-tul, dan huwa qal biss kopja 10 karattri. U li okay. Imma x'jiġri jekk l-utent ittajpjat fil-kelma fil-pront bħal kelma 20-karattru? Dan huwa qal kopja 20 karattru mill-bar fil dak? C, magħrufa wkoll bħala buffer tagħna, li jfisser li inti biss kiteb data sa 8 postijiet byte li inti ma stess, u inti ma proprji minnhom fis-sens li int qatt ma allokat lilhom. Allura dan huwa dak li ġeneralment magħrufa bħala l-attakk overflow buffer jew attakk eċċess buffer. U huwa attakk fis-sens li jekk l-utent jew il-programm li l-sejħa funzjoni tiegħek qed tagħmel dan b'mod malizzjuż, x'inhu dak li attwalment jiġri li jmiss jista 'attwalment jiġi pjuttost ħażina. Mela ejja tagħti ħarsa lejn din l-istampa hawn. Din l-istampa jirrappreżenta munzell tiegħek ta 'memorja. Ifakkar li kull darba li inti sejħa funzjoni ikollok dan il-qafas ftit fuq il-munzell u mbagħad ieħor u mbagħad ieħor u ieħor. U s'issa, konna biss tip ta 'estratt dawn kif rettangoli jew fuq il-bord jew fuq l-iskrin hawn. Imma jekk aħna zoom fl fuq waħda minn dawk rettangoli, meta inti sejħa foo funzjoni, jirriżulta li hemm aktar fuq ġewwa munzell ta 'dak il-qafas f'dik rettangolari minn sempliċiment xuy u aub, bħal aħna ma jitkellem dwar swap. Jirriżulta li hemm xi dettalji aktar baxx ta 'livell, fosthom Indirizz Ritorn. Allura jirriżulta meta jitlob prinċipali foo, prinċipali għandu jinforma foo dak l-indirizz prinċipali huwa fil-memorja tal-kompjuter għaliex inkella, hekk kif foo isir eżekuzzjoni, bħal f'dan il-każ hawnhekk, ladarba inti tilħaq dan Brace kaboċċi magħluqa fit-tmiem ta 'foo, kif l-Heck ma foo taf fejn il-kontroll tal-programm suppost imorru? Jirriżulta li r-risposta għal din id-domanda hija f'dan rettangolu aħmar hawn. Dan jirrappreżenta pointer, u huwa f'idejn l-kompjuter biex jaħżnu temporanjament fuq il-munzell hekk imsejħa l-indirizz ta 'mejn sabiex l malli foo isir eżekuzzjoni, il-kompjuter jaf fejn u liema linja ewlenija li jmorru lura għall. Pointer Frame Ssejvjata tirrigwarda b'mod simili għal dan. * Char bar hawn jirrappreżenta dak? Issa dan is-segment blu hawnhekk huwa frame foo s. X'inhu bar? Bar huwa biss l-argument li l-funzjoni foo. Allura issa aħna qed lura fil-tip ta 'l-istampa familjari. Hemm Jittieħed aktar u distrazzjonijiet aktar fuq l-iskrin, iżda dan is-segment dawl blu biss huwa dak li aħna kont qed tpinġija fuq il-chalkboard għal xi ħaġa bħal tpartit. Dan huwa l-qafas għall foo. U l-unika ħaġa fil dan id-dritt issa huwa bar, li huwa dan il-parametru. Imma dak li inkella għandhom ikunu fil-ċmieni skond dan il-kodiċi hawn? [Student] char ċ [12]. >> [Malan] char ċ [12]. Għandna wkoll tara 12 kwadri ta 'memorja allokati lil varjabbli imsejjaħ c, u tabilħaqq nagħmlu jkollhom li fuq l-iskrin. Il-quċċata hemm ć [0], u allura l-awtur ta 'dan dijagramma ma jolqot tfassil kollha tal-kwadrati, iżda hemm tabilħaqq 12 hemm għaliex jekk inti tħares lejn il-lemin tal-qiegħ, c [11] jekk inti jgħoddu minn 0 hija l-byte tali 12. Iżda hawn l-problema. F'liema direzzjoni qed c jikber? Sort ta 'top down jekk jibda fil-quċċata u tikber sal-qiegħ. Ma look like we xellug nfusna runway ħafna hawn fil-livelli kollha. Imxejna tip ta 'miżbugħa lilna nfusna fis-kantuniera, u li ċ [11] huwa dritt up kontra bar, li huwa dritt up kontra pointer Frame Ssejvjata, li huwa dritt up kontra Indirizz Ritorn. M'hemm l-ebda aktar spazju. Allura x'inhu l-implikazzjoni allura jekk inti screw up u inti tipprova qari 20 bytes ġo buffer 12-byte? Fejn huma dawk bytes 8 addizzjonali se jmorru? >> [Student] Ġewwa - Ġewwa kull ħaġa oħra, li wħud minnhom huwa super importanti. U l-aktar ħaġa importanti, potenzjalment, huwa l-kaxxa aħmar hemmhekk, Indirizz Ritorn, għaliex jissoponi li inti jew aċċidentalment jew kontradittorja jissostitwixxu dawk bytes 4, dak l-indirizz pointer, mhux biss ma żibel iżda ma 'numru li jiġri li jirrappreżentaw l-indirizz attwali fil-memorja. X'hemm l-implikazzjoni, loġikament? >> [Student] Funzjoni se terġa 'lura għal post differenti. Eżattament. Meta prospetti foo u hits li Brace kaboċċi, il-programm ser tipproċedi ma tirritornax prinċipali, li għaddej biex jirritornaw għall xi indirizz f'dik il-kaxxa aħmar. Fil-każ ta 'reġistrazzjoni ta' softwer jevita, jekk dak l-indirizz li l-jiġu ritornati lill hija l-funzjoni li normalment gets imsejħa wara li tkun ħadthom imħallas għall-software u inputted kodiċi ta 'reġistrazzjoni tiegħek? Tista sort ta trick-kompjuter fis jkunux sejrin hawnhekk imma minflok tmur up here. Jew jekk int verament għaqlija, avversarju jistgħu attwalment tip f'mill-keyboard, per eżempju, mhux kelma attwali, mhux 20 karattri, iżda jissoponi hu jew hi fil-fatt it-tipi fil- xi karattri li jirrappreżentaw kodiċi. U huwa mhux ser ikun kodiċi C, huwa fil-fatt se tkun il-karattri li jirrappreżentaw binarja magna kodiċi, 0s u 1s. Imma ejja ngħidu li qed għaqlija biżżejjed biex tagħmel dan, li b'xi mod paste fil-pront ħaġa GetString li huwa kodiċi essenzjalment miġbura, u l-aħħar 4 bytes jissostitwixxu dak l-indirizz tar-ritorn. U dak l-indirizz ma li input tagħmel? Hija fil-fatt Taħżen f'dan rettangolu aħmar l-indirizz ta 'l-ewwel byte tal-buffer. Allura inti għandek tkun verament għaqlija, u dan huwa ħafna ta 'prova u żball għall-persuni ħżiena hemmhekk, imma jekk inti tista figura kif big din buffer hija tali li l-bytes aħħar ftit fl-input inti tipprovdi għall-programm jiġri li jkun ekwivalenti għall-indirizz tal-bidu tal-buffer tiegħek, inti tista 'tagħmel dan. Jekk aħna ngħidu li normalment bonjour u \ 0, dan huwa dak jispiċċa fil-buffer. Imma jekk aħna qed aktar għaqlija u aħna timla dak buffer ma 'dak li aħna ser ġenerikament sejħa kodiċi attakk - AAA,, attakk attakk, attakk - fejn din hija biss xi ħaġa li ma xi ħaġa ħażina, x'jiġri jekk int verament għaqlija, inti tista 'tagħmel dan. Fil-kaxxa aħmar hawnhekk hija sekwenza ta 'numri - 80, C0, 35, 08. Avviż li dan jaqbel man-numru li l-up here. Huwa fl-ordni invers, iżda aktar fuq li xi żmien ieħor. Avviż li dan l-indirizz tar-ritorn ġie deliberatament mibdula li hija daqs l-indirizz up hawn, mhux l-indirizz ta 'prinċipali. Allura jekk il-Guy ħażina hija super intelliġenti, hu jew hi se jinkludu f'dak il-kodiċi attakk xi ħaġa bħal tħassar kollha tal-fajls l-utent jew il-kopja l-passwords jew joħloq kont utent li nista 'mbagħad log in to - xejn affattu. U dan huwa kemm il-periklu u l-qawwa ta 'C. Minħabba ikollok aċċess għall-memorja permezz pointers u inti tista 'għalhekk tikteb xi ħaġa li trid fil-memorja tal-kompjuter, inti tista 'tagħmel il-kompjuter do xi ħaġa li trid sempliċiment billi wara din jaqbżu madwar ġewwa l-ispazju tiegħu memorja stess. U hekk sal-lum il-programmi tant u websajts tant li huma kompromessi jsarrafx biss fl-nies jieħdu vantaġġ ta 'dan. U dan jista 'jidher bħala attakk sofistikat super, iżda dan mhux dejjem tibda il-mod. Ir-realtà hi li dak in-nies ħżiena se tipikament do hija, jekk huwa programm fuq linja ta 'kmand jew programm GUI jew websajt, inti biss jibda jipprovdi nonsense. Inti tip fil-kelma verament kbir fil-qasam tat-tiftix u hit Ikteb, u inti tistenna biex tara jekk il-websajt crashes jew inti tistenna biex tara jekk il-programm timmanifesta xi messaġġ ta 'żball għaliex jekk ikollok xortik tajba bħala l-Guy ħażin u inti tipprovdi xi kontribut crazy li ġġarrfu l-programm, li tfisser l-programmer ma tantiċipa imġieba ħażina tiegħek, li jfisser li inti tista 'probabbilment bi sforz biżżejjed, prova biżżejjed u żball, figura kif pagi attakk aktar preċiż. Allura kemm parti ta 'sigurtà mhux biss tevita dawn l-attakki kollox iżda iskoperta minnhom u attwalment tħares lejn zkuk u tara liema inputs crazy nies ittajpjat fil-website tiegħek, dak termini ta 'tiftix li nies ittajpjat fil-website tiegħek fit-tamiet ta overflowing xi buffer. U dan kollu jeħodna għall-punti bażiċi sempliċi ta 'x'hemm firxa u dak ma jfisser li talloka u l-użu tal-memorja. Relatati ma 'din allura wisq huwa dan. Ejja biss t'għajn ġewwa ta 'hard drive għal darb'oħra. You lura minn ġimgħa jew tnejn ilu li meta inti drag fajls għall tiegħek riċiklu bin jew Trash jistgħu, x'jiġri? >> [Student]. Xejn >> Assolutament xejn, id-dritt? Eventwalment, jekk inti tmexxi baxx fuq l-ispazju disk, Windows jew Mac OS se jibda tħassar files għalik. Imma jekk inti drag xi ħaġa fil hemm, li mhuwiex f'kull sikur. Kollha roommate tiegħek jew ħabib jew membru tal-familja ma tagħmel hu li ikklikkja darbtejn u, voila, hemm il-fajls kollha vaga li inti ppruvaw li jitħassar. Ħafna minna inqas jafu li inti għandek dritt ikklikkja jew Kontroll ikklikkja u vojta-Trash jew xi ħaġa bħal dik. Iżda anke allura dan ma pjuttost tagħmel l-trick għaliex dak li jiġri meta inti jkollhom fajl fuq hard drive tiegħek li tirrappreżenta xi dokument Word jew xi JPEG, u dan jirrappreżenta hard drive tiegħek, u ejja ngħid dan sliver hawn jirrappreżenta dan il-fajl, u huwa kompost minn mazz sħiħ ta '0s u 1s. X'jiġri meta inti mhux biss drag dan il-fajl lill-Trash tista 'jew jirriċiklaw Usama iżda wkoll vojta? Sort ta 'xejn. Mhuwiex assolutament xejn issa. Issa huwa biss xejn għax ftit xi ħaġa jiġri fil-forma ta 'din it-tabella. Allura hemm xi tip ta 'database jew tabella ġewwa tal-memorja tal-kompjuter li essenzjalment għandha kolonna waħda għal fajls "ismijiet u kolonna waħda għall-fajls" post, fejn dan jista 'jkun post 123, biss numru bl-addoċċ. Allura aħna jista 'jkollha xi ħaġa simili x.jpeg u l-post 123. X'jiġri mbagħad meta inti attwalment vojta Trash tiegħek? Li tmur bogħod. Imma dak ma jmurx lil hinn hija l-0s u 1s. Allura x'inhu l allura l-konnessjoni ma 'pset4? Ukoll, ma pset4, sempliċement għaliex aħna ve aċċidentalment mħassra l-karta flash kompatti li kienu kollha ta 'dawn ir-ritratti jew sempliċiment minħabba li mill xortih ħażina saret korrotta ma jfissirx li l-0s u 1s mhumiex għadhom hemm. Forsi ftit minnhom huma mitlufa minħabba xi ħaġa ltqajna korrotta fis-sens li xi 0s saret 1s u 0s 1s sar. Affarijiet ħżiena jista 'jiġri minħabba l-software Buggy jew difettużi hardware. Iżda ħafna minn dawk bits, forsi anki 100% minnhom, għadhom hemm. Huwa biss li l-kompjuter jew l-kamera ma tkunx taf fejn tibda JPEG1 u fejn JPEG2 beda. Imma jekk inti, il-programmer, jafu bi ftit ta 'sofistikati fejn dawk JPEGs huma jew dak li look like sabiex inti tista 'tanalizza l-JPEG 0s u 1s u jgħidu, JPEG, inti tista 'tikteb programm essenzjalment biss għal jew waqt loop li jirkupra kull wieħed minn dawn il-fajls. Allura l-lezzjoni allura huwa li tibda sigur tħassar fajls tiegħek jekk inti tixtieq li tevita dan għal kollox. Iva. [Student] Kif come jgħid fuq il-kompjuter tiegħek li inti għandek memorja aktar milli għamilt qabel? Jkollhom memorja aktar minn għamilt qabel - >> [student] memorja Aktar disponibbli. Oh. Good kwistjoni. Allura għaliex imbagħad wara jitbattal il-Trash ma kompjuter tiegħek jgħidlek li inti għandek aktar spazju ħieles minn għamilt qabel? Fil-qosor, għaliex dan huwa mimdud. Aktar teknikament, inti għandek spazju aktar għaliex issa li qalu inti tista 'tpoġġi Jittieħed oħra fejn dan il-fajl kienet darba. Iżda dan ma jfissirx l-bits huma tmur lil hinn, u dan ma jfissirx l-bits qed jiġu mibdula għal kulħadd 0s, per eżempju, għall-protezzjoni tiegħek. Għalhekk għall-kuntrarju, jekk inti sikur litħassar fajls jew fiżikament jeqirdu l-apparat, li verament huwa l-uniku mod kultant madwar dik. Allura għaliex ma we leave fuq din in-nota semi-scary, u aħna se tara int nhar it-Tnejn. [Applause] [CS50.TV]