>> [Musika jotzen]
>> David J. MALAN: Eskubidea guztiak.
>> [Barreak]
>> Ongi itzuli.
Hau CS50 da.
Eta hau da, bost aste bukaeran.
Eta, orain arte, nahiko askoz dugu eman eman hartuz ez dagoela
konpiladore honetan, Clang, hori dituzun existitzen dira honen bidez dei
beste tresna izeneko Egin hori nolabait magikoki zure iturburu kodea bihurtzen
objektu-kodea, zero eta zeintzuk sartu ordenagailu CPU, central que
prozesatzeko unitatea, benetan ulertzen.
Baina badira zenbaki bat hori da, bihurtzen da gertatzen kanpaia azpian hasi
sarrera eta irteera artean.
>> Eta haragia dugula proposatu nahi nuke Xehetasun gehiagorekin sartu dela
lau urrats horiek, zerbait izeneko pre-tratamendua, zerbait
izeneko konpilazioaren, eta hori ikusi dugu, zerbait izeneko muntaia, eta
zerbait izeneko lotzen ditu.
Beraz, orain arte, gure zenbait programak, izan dugu zorrotzak barne.
Duela gutxi izan dugu zorrotz batzuk konstanteak definitzen.
Beraz bihurtzen da gauza horiek duten ari ikurra hash edo aurretik
libera sinboloa dira pre-prozesadorea zuzentarau.
Hori besterik ez da esaten, modu dotore bat , kode-lerro hori benetan
beste zerbait aurretik bihurtu ordenagailuan ere saiatu bihurtu zure
zeroen eta programa sartzen direnak.
>> Esate baterako, estandar zorrotzak hartzen ditu barne I / O. H, nahiko askoz besterik esan nahi du joan
aurretik, hartu fitxategiak edukia stdio.h eta itsatsi bertan.
Zero ez direnak eta, beraz, puntu horretan oraindik ere.
Benetan aldaketa bat besterik ez da.
Eta hori da deiturikoak zehar egindako aurrez prozesatzeko etapa duzunean
benetan exekutatu Clang edo berariaz Kasu gehienetan egiteko.
Beraz, hau guztia gertatzen ari da Lehenengo automatikoki horrela urruti.
>> Ondoren, konpilazio urratsa dator.
Baina dugu bada oversimplified konpilazio.
Programa bat konpilatzea benetan esan nahi hartu C bezalako zerbait, batetik,
iturburu kodea gara, idatziz zerbait izeneko muntaketa.
Batzar hizkuntza maila txikiagoa da hizkuntza hori, zorionez, ez dugu
dute askoz oraingoan idatzi seihileko honetan.
Baina maila txikiena zuen Zentzu literalki, zuk idazten hasteko
gehitzeko eta kenketak eta biderketak eta kargatu memoria eta memoria gorde nahi du,
oso oinarrizko jarraibideak ordenagailu bat, kanpaia azpian,
benetan ulertzen.
>> Azkenik, muntaia hizkuntza hartzen to zero eta bai dugun izan
beraz, orain arte deskribatzeko.
Eta, azkenik, benetan, ez dago deritzona da fasea lotzen dituen, eta horrek egiten zaitugu
une bat besterik ez da, eta horrek konbinatzen ikusi zure zero eta zero dituztenak eta
direnak beste pertsona batzuk lehenago zuk sortutakoak.
>> Beraz, kontuan hartu hau super simple programa.
Izan zen Astea 1etik da.
Esan zuen, besterik gabe, Hello World, pantailan.
Hau ran dugu Clang bidez.
Edo Egin bidez ran dugu horrek ran Clang.
Eta garai hartan outputted non zero batzuk ere bai.
Baina, ez da kanpo bihurtzen da tarteko urrats bat.
Joan nintzen baino gehiago izanez gero, hemen - Ene, ez nahi zion ikusteko oraindik.
Joan nintzen baino gehiago izanez gero, hemen nire tresnaren eta ireki dut hello.c, hemen
bera duen programa da.
Eta zein da nire terminal egin dut leiho hemen noa
exekutatu Clang baino Make, eta horrek automatizatzen guztiak lau
Gurekin urrats horiek.
Eta clang-S egiten dut eta hello.c ondoren, eta, ondoren, idatzi.
>> Eta keinuka gonbit bat eskuratu dut berriro ere, eta hori ona da.
Eta orain, apur bat handiagoak leihoan, Ireki gedit hemen noa.
Eta ireki fitxategi bat dut, bihurtzen da, deritzo hello.s honetan
muntaia hizkuntza hori du Aipatu dut lehenago.
Eta hau da, zer deitzen muntaia hizkuntza, nahiko maila baxua
argibideak zure Intel CPU duten edo edozein hori barruan da
ulertzen.
Eta mov mugitzen da. deia da , telefonora deitu behar da, oso maila funtzioa.
Azpi kendu da.
>> Beraz, bereziki PUZ bat duzu barruan Zure ordenagailuan, zer egiten du
Ezberdinak, versus bestetik PUZ merkatua da, eta horrek argibideak da
ulertzen du, eta, askotan, nola eraginkorra da da, nola azkar da zenbait exekutatzean da
jarraibide horien.
Orain honi buruzko informazio gehiago lortzeko, hartu ahal izango duzu hurrengo Fall Colegio CS61.
Baina, hemen, dugu, adibidez, batzuk identifikadore hori ezagutzen begiratu dezake.
hello.c programa baten izena da.
>> . Testua -
Ez dago interes handirik ez orain, gogoratzen den testua
segmentuan, astelehenetik bezala, non parte memoria zure programa benetan amaitzen.
Beraz, hori da, gutxienez vaguely ezagutzen ez.
Hemen, jakina, aipatu behar da Gure eginkizun nagusia da.
Behera korritu, gauza hauek erreferentzia izenekoa erregistroak, oso txikiak Saiakera
memoria zure CPU benetako barruan.
Eta joan I behera bada, are are gehiago, nolabaiteko ikusten dut
ASCII zeharkako aipamena.
Eta hor dago, hain zuzen ere, kate hau da, kaixo, koma, mundua.
>> Beraz, istorio laburrak, hau izan da zuretzat, gertatzen ari da automatikoki,
kanpaia azpian, denbora hori guztia.
Eta zer dira benetan gertatzen ari dena da behin exekutatu duzun Clang, edo bidearen arabera
Egiteko, lehen ari zaren lortzean, iturburu-kodea, batetik,
izenekoak muntaia hizkuntza.
Ondoren Clang muntaia hau bihurtzean Hizkuntza behera zero eta direnak.
Eta hau diapositiba hasi dugu Gure Aste 0 buruzko eztabaida -
eta, ondoren, Aste 1.
Eta, azkenik, zero horiek eta bai daude zero eta bai konbinatzen
liburutegi horiek gara hartuz Standard I / O edo atsegin ematen
Katea Liburutegia edo are CS50 liburutegian.
>> Beraz, irudi hau margotzeko gehiago ikusmen, hello.c dugu.
Eta, jakina, baina, erabiltzen printf du funtzionatzeko, esan kaixo mundua.
Konpilazio urratsa hartzen du behera espedientea ikusi besterik ez dugu hello.s, nahiz
hori, normalean, nahiz eta ezabatu automatikoki.
Baina hori muntaia kodea da erdiko urratsean.
Eta orduan, muntaia muntatzen dugu hizkuntza, nolabait esateko, hori egiten duzunean
lortu zero eta horiek ere.
Beraz, modu eraginkorrean parte dugu handitutako gaur egun on zer gara emandako hartuz,
esan nahi du iturri kodea joan kodea oposiziorako.
>> Baina, azkenik, gaur egun, irudi bera dela - it shove dezagun baino gehiago
ezkerreko aldean.
Eta ohartu goian dagoela Stdio.h aipatu dut.
Duen fitxategi bat dugun sartzen da ia hasi
programak idatzitakoa dugu.
Eta espedientea horren edukia da get kopia itsatsi,
eraginkortasunez zure kodea gainean.
Baina bihurtzen da, eta ordenagailu batek sistema, nonbait, ez da zentzuzkoa bat
stdio.c fitxategia norbaitek idatzi zuen urte duela inplementatzen guztiak
funtzio izendatu zuten stdio.h batean.
>> Orain errealitate seguruenik ez zure Mac edo zure PC edo are batean
CS50 tresnaren bat gordinak C kodea da.
Norbaitek dagoeneko konpilatu da, eta barne . O kode objektu edo fitxategi bat.
fitxategia, eta horrek liburutegi partekatua aipatzen hori izan da aurrez instalatutako eta
zuretzat aurrez konpilatutako.
Baina demagun ez dagoela, hain zuzen ere existitzen gure ordenagailuak paraleloki stdio.c an
Clang batera.
Zure kodea da konpilatuta eta muntatu.
stdio.c kodearen ari bildu eta muntatu, beraz, azken hori
zapaldu, behera hemen, nolabait dugu lotura, nolabait esateko, zure zero eta bai
bere zero eta bai bat sartu programa erraz bat da, azken finean,
deitu besterik Hello.
>> Beraz, hori da magia hori guztia izan da, beraz, orain arte gertatzen.
Eta hauek hartzen jarraituko du prozesuak ematen, baina konturatu
han xehetasunak mamitsuena asko gertatzen ez azpian.
Eta hau da, zer egiten du zure Intel barruan ordenagailu
bereziki desberdin.
>> Beraz, ohar horretan, nahi duzu bada gurekin Bazkaltzeko ostiral honetan, joan egin
Ohiko leku cs50.net/rsvp, 1:15 PM ostiral honetan.
Eta, orain gutxi iragarkiak bat.
Beraz, berri onak batzuk ditugu.
Eta zenbait albiste txarra izan dugu.
Berri onak hemen hasi.
>> [GROANING]
>> Guztiak eskubidea.
Beno, teknikoki da opor eta, beraz, ez da hainbeste digu opari bat.
Baina gero, noski, albiste txarra da.
>> [GROANING]
>> Denbora asko igaro dut animazioak horien gainean.
>> [Barreak]
>> Ez dago berrikuspen saio bat izango da, hau astelehena datozen.
PM 5:30 etan izango da joan.
Gogoratzen izango ditugu datu horiek guztiak Ikastaro horrek e-posta bidez
besterik gabe, egun pare bat webgunea.
It filmatu egingo da, eta eskuragarri Handik gutxira.
Beraz, bada, ezin duzu egiteko hori astelehena gau zirrikitua, ez kezkatu.
Atal datozen aste honetan izango da, gainera, Iritzia zentratu galdetegiko.
Zure atala Astelehena, hau da, badago hain zuzen ere, unibertsitateko opor dugu
oraindik atalean betetzen.
Besterik gabe, ezin baduzu egin duten Atal ari zaren joan delako
kanpoan, hori ongi.
Igandea joateko bat edo Asteartea atala edo to tune-en Jason atala, hau da,
eskuragarri online.
>> Beraz, gehiago albiste txarra.
Beraz, curriculumaren arabera, hitzaldia dugu datorren ostiralean.
Baina berri ona -
argi eta garbi, denbora gehiegi igaro dut honetan.
>> [Barreak]
>> Ostirala en hurrengo hitzaldiak izango ditugu bertan behera uzteko.
Beraz, guretzat opari bat izango da, beraz, benetan polita izan atsedenaldi batean
aste honetan, eta beraz, bi aste bitartean.
Ez hitzaldi datorren astean, txiki-txiki bat besterik ez da, beraz, galdetegi txiki, zein izan behar duzu
ohitu gero eta ilusioa.
>> Hargatik, gaur egun gure arreta piztu behar zerbait gehiago da, hain zuzen ere, ikusmen
eta gehiago zirraragarria eta etapa ezartzeko zer horizonte izan joan
denbora besterik aste pare bat.
Lehenengo galdetegi ondoren, buelta dugu gure arazoa multzoen bestera fokua
domeinu arazo jakin, dela auzitegi edo segurtasun gehiago, oro har.
>> Izan ere, arazo hau tradizio set me bat da
ikaskide edo CAk irakasten ibiltzen zehar campuseko argazki batzuk hartzen
identifikagarri baina ez bistako pertsona, leku, edo gauzak, eta, ondoren, urtero dut
nolabait kudeatzeko ustekabean ezabatu edo hondatutako digital media txartela
hori da gure barruan kamera.
Baina big deal ez.
Aurrera dezaket eta plug nire ordenagailuan sartzen.
Da irudi auzitegiko bat egin nuen, beraz, , hitz egiten zero kopiatzea eta
direnak off memoria txartela duten ala ez bere SD txartela edo compact flash txartela edo
edozein dela ere ezagutzen duzu.
Eta gero entregatu ahal izango dugu.
>> Eta, beraz, erronka aurretik, besteak beste, zuretzat gauza, idazteko izango da
C kodea duten sorta oso bat berreskuratu du Niretzat JPEGs eta agerian izango da
Pertsona horiek, lekuak, edo gauza.
Eta, gainera, hitz egingo dugu, arazo honetan ezarri eta egunetan, zatoz buruz
grafikoak orokorrean.
Erabili dugu beraiekin, ikastaro bat, apurtu da.
Baina Ordena duzun hartu emandako existitzen ez horiek maila handiko nozio
laukizuzenak eta obalo du.
Baina kanpaia azpian daude pixel.
Eta izan dituzun hasteko horiek pentsatzen.
Edo p-multzoa izango duzu 4 izatea uste Zure adreilu arteko aldea buruz, nola
azkar baloia zaren zehar mugitzen da Pantailako apurtu.
Beraz, ideia hau da: zure pantaila hori puntu
play sartuko da dagoeneko.
>> Orain ikusten duzuna, baina, zer da lortu ordenagailuko pantailan duzu.
Dituzun inoiz bada gainbegiratu onak edo txarra telebista, odds askoz politak dira
tratatzeko technophobes bezalako ikusleek ez duten benetan
ezagutzen informatika buruz asko.
Eta, beraz, oso erraza da polizia for detektibe esan, ezin duzu
garbitu niretzat sortu dela?
Edo hobetzeko, ezta?
Hobetu hitza buzz bezalakoa da gehien edozein delitu erlazionatutako ikuskizuna.
Eta errealitatea da hartu duzu oso bat bada susmagarri bat egiteko argazki lausoak
zerbait txarra, ezin duzu hobetu besterik ez da.
Ezin duzu infinituki gerturatzeko.
Ezin duzu norbait en glint ikusi begi duten konpromisoa hartu duten
bereziki delitu, izan arren hau prebalentzia telebistan.
>> Eta, beraz dezagun motibatu duten próximas arazoa ohi batean ezarri
ikuskizunak eta horietako batzuk egiten duzun ezaguna izan daiteke.
>> [Bideo-erreprodukzioa]
>> -Ados.
Orain, duzun begirada on bat lortzeko en.
>> -Hold it.
Exekutatu back hori.
>> -Itxaron minutu bat.
Joan eskuinera.
>> -Ez dago.
Izoztu dela.
>> -Pantaila osoa.
>> -Ados.
Izoztu dela.
>> -Estutu sortu horretan, egingo dut?
>> Mutil on-Vector atzeko gurpila arabera.
>> Eskubidea hemen Zoom-Leku honetan.
>> -Ekipoak, eskuin, imaged du handitu ahal izango da, eta zorroztu.
>> -Zer da hori?
>> Ditu hobekuntza-programa bat da.
>> -Ezin duela garbitu edozein sortu?
>> -Nik ez dakit.
Dezagun areagotuko da.
>> -Hobetu atal A-6.
>> -I xehetasun hobetu eta -
>> -Nik ez da nahikoa uste hobetzeko.
Askatu da nire pantaila.
>> -Hobetu bere begi isla.
>> -Dezagun exekutatu honen bidez bideo-hobekuntza.
>> -Edgar, hau hobetu ahal izango duzu?
>> Hang-an.
>> -I've dira hausnarketa hori lantzen.
>> Norbaitek-en gogoeta.
>> -Hausnarketa.
>> -Bada, gogoeta bat da gizonaren aurpegian.
>> -Hausnarketa.
>> -Bada, gogoeta bat da.
>> Ispilu on-Txikiagotu.
>> -Duzu gogoeta bat ikus daiteke.
>> -Can, irudia hobetzeko duzu hemendik aurrera?
>> -Ezin hura hobetzeko duzu hemen?
>> -Ezin hobetzen duzu?
>> -Ezin dugu hau hobetzeko?
>> -Ezin hobetzen duzu?
>> Bigarren an-Eutsi, hobetu dut.
>> Ate-en Txikiagotu.
>> X10-.
>> Zoom-.
>> [Barreak]
>> -Mugitu sartu
>> -Itxaron, gelditu.
>> -Gelditu.
>> -Pausatu da.
>> -Biratu 75 gradu inguruan bertikala mesedez.
>> [Barreak]
>> -Gelditu, eta atzera zatia atea buruz berriro.
>> Got-irudi bat Enhancer ahal bit?
>> -Agian Pradeep Sen erabili ahal izango dugu metodoa leihoetatik sartzen ikusi.
>> -Hau software artearen egoera da.
>> The ikono-balioa da off.
>> -Rekin eskuineko konbinazio algoritmoak.
>> -Hartu zuen argiztapen algoritmoak behar hurrengo maila I eta horiek erabili ahal izateko
argazki hau indartzeko.
>> -Lock eta z ardatzean handitzeko.
>> -Hobetu.
>> Izoztu-eta hobetzeko.
>> [END bideo-erreprodukzioa]
>> David J. MALAN: Beraz Arazoa Ezarri 5 zer datza aurretik dago.
Beraz, laster ikusiko dugu hobeto ulertzeko noiz eta zergatik ditzakezun
eta gure ezin horrela hobetzeko.
Baina lehen, dezagun itzuli, gure arreta eraikuntza-blokeak egiten zaitugu batzuk
gai izan behar duen istorio kontatu nahi izan.
>> Beraz, gogora ekarri atera dugun argazki honetan Astelehena, eta pixka bat azken astean.
Eta hau gauza diseinua deskribatzen ordenagailuaren memorian denean
programa exekutatzen ari.
Gora gora segmentu Tech, oroitzapen, aipatzen , benetako zero eta bai
osatzen duten programa.
Ez da, behean, edo batzuk hasieratu uninitialized datuak, eta horrek, normalean,
konstanteak nahi bezala gauzak edo aipatzen kateak edo global aldagaiak
dira, aldez aurretik onartuta.
Badira zeure da, baina etorri egingo dugu itzuli pixka batean.
>> Eta gero pila da.
Askoz erretiluak pila bezala kafetegia, hau da, non memoria lortzen
geruzetan eta geruzetan direnean Zer programa batean?
Zer pila erabiltzeko da?
>> Bai?
>> Funtzioa deitu.
Denbora edozein funtzio-dei bat duzunean, memoria sliver bere egiteko
aldagai lokalak edo bere parametroak.
Pictorially eta, ikusiko dugun bakoitzean duten ondoz ondoko funtzioa deitzen denean, A
deiak deiak B C D deiak, haiek get pila gainean sartuta.
Eta xerra horietako bakoitzean memoria funtsean berezia hedadura
funtzio hori, eta, jakina, problematikoa da nahi duzun eskua bada
ko funtzio batetik bestera pieza bat datuak nahi duzun da
edo mutate aldatzeko.
>> Beraz, zein izan zen gure aukera ematen irtenbide Pila bat irudikatzen dute funtzio bat
enkoadratzearekin memoria barruan aldatzeko pilaren markoa beste bat?
Nola bi eztabaida horiek beste bat?
Beraz, erakusleak edo helbideak moduan, horrek, berriz, besterik gabe, deskribatzeko non hasi
memoria, jakin bat modu Esku-zenbakia, bereziki,
balioa aurkitu daitezke.
Beraz, azken aldiz gogoratzen dugu gehiegi jarraitu istorioa eta begiratu
nahiko buggy programa.
Eta programa honen gutxi bat da buggy arrazoiak, baina gehienak worrisome bat da
huts egiten badu zer egiaztatu behar delako?
>> Bai, sarrera egiaztatu huts egin.
Sentitzen dut?
>> Da 12 karaktere baino gehiago badu.
Beraz, oso smartly, noiz memcopy deituz, horrek, izenak dioen bezala, besterik gabe,
kopiak bere argumentua bigarren memoria bere lehen argumentua da.
Hirugarren argumentua, oso smartly da hautatuta Ziur ez duzula egiteko
kopiatzeko baino gehiago, kasu honetan, luzera bar, karaktere-kopurua,
helmuga izan da, hau da, array C. Baina arazoa da zer
C bera ez bada nahikoa handi kudeatzeko duten?
Kopuruaren kopiatzeko duzu byte duzula eman.
Baina, zer egin behar benetan gehiago byte baino gela?
>> Beno, programa hau oso foolishly besterik blindly hasten da, edozein dela ere hartu behar da
eman, kaixo backslash 0 handia bada kate laburra
nahikoa, bost karaktere bezala.
Baina benetan bada edo 12 karaktere 1.200 karaktere, azken aldiz ikusi genuen
ari zaren, besterik gabe, erabat joan gainidatzi memoria
ez du zurea.
Eta kasurik okerrenean, gainidatzi baduzu gorri zati izeneko dugun
itzultzeko helbidea -
hau da, ordenagailuaren automatikoki, zuretzat, atzean
eszenak, tucks kanpoan 32 biteko balioa duen gogorarazten zer helbide behar
itzuliko dira foo, beste funtzio hau, egiten da exekutatzen.
Ordenatzen du mamia, ogi bat da zein itzultzen.
Gainidatzi baduzu, seguru asko, Oraindik txarra zentzuduna bada, ezin liteke
potentzialki hartu baino gehiago norbaiten ordenagailuan.
Eta, zalantzarik gabe, izango duzu, kraska da kasu gehienetan.
>> Orain, arazo hau areagotu besterik ez zen hasi ginen memoria buruz hitz gisa
kudeaketa orokorrean.
Eta malloc, memoria esleitzeko, bada bat funtzioak esleitu dugu erabili ahal
memoria ez dugu aldez aurretik jakin batzuk garela behar izatea.
Beraz, adibidez, joan nintzen atzera tresnara hemen.
Eta ireki nuen azken aldiz hello2.c batetik, gogoratzen programa hau hemen, eta horrek begiratu
honen antzeko zerbait apur bat, Hiru lerro -
adierazi zure izena eta, ondoren, kate izena, ezkerretik, berdinen getstring.
Eta, ondoren, inprimatu dugu, erabiltzailearen izena.
>> Beraz, hau super programa erraza izan zen.
Argi izan dezagun, aurrera me eta hola-2.
Dot barra-2 kaixo egin nahi dut.
Adierazi zure izen -
David.
Sartu.
Kaixo David.
Ados lan egin behar dela dirudi.
Baina zer da benetan gertatzen kanpaia hemen azpian?
Lehen dezagun atzera azala geruza batzuk en.
Katea sinonimo besterik ez dugu da konturatu zer?
Char izarra.
Hargatik, pixka bat gehiago da urrutira baina teknikoki zuzena hau
karaktererik izar, eta horrek esan nahi du, hau da, izena, bai, aldagai bat da.
Baina zer gertatzen da izen-dendak helbide da karaktere bat, sentitzen pixka bat arraroa
dut itzuli delako katea.
Atzera anitz dut lortzean karaktereak ez du karaktere bat.
>> Baina, noski, bakarrik behar duzu lehenengo char en helbide gogoratu du, non
kate osoa da, zergatik delako?
Nola irudikatu duzu, non bukaera katea hasieran dago, zertarako?
Backslash zero.
Beraz, bi arrasto horiek irudikatu duzu hasiera eta amaiera baino lehenago
edozein kate daude eta, beraz, luze jo dute Oraindik ongi null horrekin eratu
amaiera, backslash zero dela.
>> Baina hori getstring deituz.
Eta bihurtzen da hori getstring denbora honetan guztian izan da mota
Gurekin iruzurra.
Ari dira lan hori egiteko, ziur izan, Erabiltzaile-kate bat lortzean.
Baina non memoria hori dira datozen?
Joaten gara itzuliz gero, argazkia eta hemen aplikatuko definizio berri bat
Oraingoz, duela pila dagoela, non memoria joaten denean funtzioak deitzen dira,
logika horren arabera, noiz getstring deitu, eta, ondoren, idatzi dut
D-A-V-I-d, non sartu da D-A-V-I-D backslash zero gordetzen oinarritutako an
istorioa kontatzen dugu gurekin arte?
>> Badirudi ahal izango litzateke pila, ezta?
Noiz lortu katea deitu bat lortuko duzu pila memoria zati txiki.
Beraz, D-A-V-I-D arrazoia nabarmentzen da backslash zero gordetzen
pila dago.
Baina itxaron minutu bat, itzultzen getstring katea, nolabait esateko, eta horrek esan nahi du
kafetegitik erretilu da hartu off pila.
Eta azken aldiz esan dugun bezala, laster batean gisa funtzioak, eta zuk hartu
iturria, nolabait esateko, pila off, zer ahal izango du bere gain hartzen arrastoen buruz
memoria hori?
Redrew Ordena ditut galdera-marka gisa eragingarritasunez bihurtu delako
balio ezezaguna da.
Dira berriz erabili daiteke batzuk hurrengo funtzioa deitzen da.
>> Bestela esanda, gerta badugu egon gordetzeko to -
Azkar irudi bat marraztu dut Hemen pilaren.
Gerta dugu marrazketa beheraino bada nire memoria segmentu, eta esan dugu
hori memorian lekua arg nagusia, eta, agian, C eta okupatzen
arg V eta ezer gehiago programan, denean getstring deitzen da,
zentzuzkoa getstring lortzen bat memoria zatia hemen.
Eta, ondoren, D-A-V-I-D nolabait amaitzen funtzio honetan.
Eta oversimplify noa.
Baina Demagun bere D-A-V-I-D backslash zero.
Hainbeste byte hau erabiltzen getstring for markoan.
>> Baina berehala itzultzen getstring gisa, dugu esan zuen azken aldiz memoria honetan zehar
Hemen guztiak bihurtzen - woops! -
guztiak bihurtzen eraginkortasunez ezabatu.
Eta hau ezin dugu uste, orain galdera markak nork daki zeren
zer memoria horren bihurtu dugu.
Izan ere, askotan deitu dut funtzioak getstring beste.
Eta berehala deituko dudan bezala, beste batzuk getstring baino funtzioa, agian ez
bereziki, programa honetan begiratu besterik ez dugu baina, ziur aski, beste beste batzuk
funtzioa azkenean baliteke ematen pila in situ etorkizunean.
>> Beraz, ezin da getstring azalera izatea Pilan D-A-V-I-D nuke, zeren
berehala galduko sarbidea.
Baina badakigu getstring bakarrik zer?
Ez da itzuli Niri sei pertsonaiak.
Zer da zuen benetan itzuli azken ordua ondorioztatu dugu?
Lehenengoa helbidea.
Beraz, nolabait, noiz getstring deitzen duzu, memoria zatia da aldi baterako
katea, erabiltzaile mota eta hori eta gero itzuli da helbidea.
Eta bihurtzen denean nahi duzu Funtzio honek memoria esleitu
modu eta pertsonari deitzen bueltan funtzioa, helbide
memoria zatia dela, zu erabat ezin jarri pila in hartan
behean, funtzionalki delako besterik ez da ez zurea bihurtu Oso joan
azkar, beraz, seguruenik dezakezu asmatzeko non ziurrenik gara zozketa joan
ordez, llamado zeure du.
>> Beraz, zure memoria en beheko arteko diseinua eta zure memoria en goiko
diseinua segmentu sorta oso bat dira.
Pila bat da, eta eskuineko gainean zeure da.
Eta zeure bat besterik ez da, hainbat zatika memoria hori ez funtzioak erabiltzen
direnean, deitzen ari.
Honez memoria epe luzean erabiltzen denean, ko funtzio batzuk hartu nahi duzun
memoria eta gai izango an zintzilikatzeko da gainean kontrola galdu gabe.
>> Orain agian ezin duzu berehala ikusten hau ez dela
perfektua diseinu bat egotea.
Zure programa egotzitako memoria gisa, pila, edo deitu duzun bezala, gero eta
Funtzio gehiago, edo bestela, esleitu gisa da malloc batera zeure gisa off memoria
getstring da, zer egiten ari da argi eta garbi, badirudi saihestezina izango da arazoa?
>> Eskubidea.
Izan ere, hala nola gezi horiek elkar seinalatuz
ez du Bode ondo.
Eta, hain zuzen ere, oso azkar izan dugu huts modu kopurua edozein programa bat.
Izan ere, izan dezake dugula uste dut honek ustekabean egin ondoren.
Edo ez bada, utzi egin nahita orain.
Let me aurrera idazten eta super azkar Programa bat izeneko dontdothis.c.
Eta orain, joan naiz eta hemen ez zorrotz artean, stdio.h.
Funtzioa foo hartzen aldarrika dezagun argumentuak ez du, hau da,
baita hutsunea adierazten du.
>> Eta gauza bakarra da foo egingo da dei foo, ziurrenik ez da
smartest ideia, baina hain da.
Ent hutsune nagusia.
Orain gauza bakarra da nagusira joan egin foo deitzen da baita ere.
Eta besterik Jaurtiketa egiteko, joan naiz Aurrera eta hemen esan printf "Kaixo tik
foo ".
>> Ados.
Beraz, bada, ez dut akatsik egin, Egin dontdothis dot barra.
Eta utzi egin da handiagoa leihoan -
dot barra, dontdothis.
Goazen.
Ai ene.
Dirudienez, hau egin ahal izango duzu.
Madarikatua da.
Ados.
Itxaron.
Stand by.
Egin dugu -
Berau erabili genuen Egin batera.
>> [Suspiros]
>> Ezagutzen dut, baina uste dut besterik ezabatu duten.
Uh, bai.
Madarikatua da.
Rob hau konpontzeko.
Zer?
Oso erraza da.
Bai, optimizazioa aktibatuta off dugu.
Ados, stand bye.
Orain hobeto sentitzen naiz.
Ados.
Guztiak eskubidea.
>> Hargatik konpilatu hau -
Egin duzun dontdothis.
Hau izenez aldatu beharko duzu besterik gabe, une batean dothis.c.
Ez dago goaz.
Eskerrik asko.
Ados.
Izan zen duten I inprimatzeko beraz, zerbait atera zen benetan besterik
moteldu dituen prozesua dugu iritsi litzateke puntu horretan.
Ados.
Phew!
>> Beraz, zer da benetan gertatzen ari da?
Arrazoia ez dago, besterik gabe, bat alde batera bezala, ezer egin sarrerari dagokionez, eta
irteera joera motelagoa izan nahi duzulako izan karaktereak idatzi du
pantailan, korritu ditu.
Hain luze ipuinean, izan nuen benetan gertatu da, beraz, pazientzia, izango genuke
ikusten da azken emaitza hau ere.
Orain dela inprimatu-ak duen ibilaldi lortu nuen, ikusten dugu berehala.
Beraz, zergatik ez da hau gertatzen.
Beno, azalpen errazak, jakina, foo da hori beharko ez
bera izango deituz.
>> Gaur egun, oro har, hau errekurtsio da.
Eta aste pare bat pentsatu genuen Duela recursive ona da.
Errekurtsio hau modu magikoa da zeure burua adierazteko super succinctly.
Eta lan egiten besterik ez da.
Baina ez dago guztien ezaugarri nagusietako bat du recursive programak hitz egin dugu
buruz, eta begiratu batean, beraz, orain arte, eta horrek izan zen, zer egiten dute?
A-oinarria kasuan, hau da, batzuetan gogorra kodetuak Kasu horretan, egoera batzuetan esan
ez deitu foo, hau da, argi eta garbi ez da kasua hemen.
>> Beraz, zer da benetan gertatzen ari dena Argazki hau dagokionez?
Beno, orduan nagusia foo deitzen da, memoria zati bat jasotzen du.
Noiz foo foo deiak, baina lortzen memoria-xerra bat.
Noiz foo foo deiak, xerra bat lortzen da.
Xerra bat lortzen da.
Foo da inoiz itzuli.
Inoiz ari gara horietako bat ezabatu tik pila fotograma.
Beraz, zeure bidez ari gara, ez putz nork daki zer gehiago, eta aipatu nahi
gure mugetatik gara overstepping izenekoak memoria segmentu.
ERROREA joan segmentazio faltsua.
>> Konponbidea ez da, beraz, argi eta garbi, ez egin hori.
Baina inplikazio handiagoa du, hori bai, ez da ez dago erabat muga batzuk,
bada ere, ez da oso ondo definitu, nola jo askotan funtzio bat dei dezakezu
programa, zenbat aldiz funtzio bat berak dei daiteke.
Beraz, nahiz eta predikatzeko errekurtsio genuen hau potentzialki magiko gisa, gauza bat
aste pare duela sigma du funtzioa, eta datuak eskuratzeko dugu
egiturak eta CS50, beste bat ikusiko duzu ditu eskaerak, ez da
nahitaez onena.
Zeren eta funtzio bat deitzen du bere burua, deitzen dio berak, nahiz eta han-base bat da
kasu horretan, ez duzu hit bada, kasu horretan, oinarri 1.000 deiak edo 10.000 deiak, arabera
duten aldia exekutatu agian gela Zure deiturikoak pila eta hit on
memoria segmentu beste batzuk.
Beraz, ez da gehiegi diseinua merkataritza-off dotorezia artean eta artean
zure sendotasuna ezartzeko.
>> Beraz, ez dago arazotxo bat, edo da zer dugu Gotcha beste
izan da, beraz, orain arte egiten ari dira.
Noiz getstring deitu nuen -
dezagun atzera me-kaixo 2.
Nabarituko dut getstring deituz, duen helbide bat itzuli egin da.
Eta gaur aldarrikatzen dugu helbide zeure bada.
Eta orain naiz inprimatzen du helbide hartan katea.
Baina inoiz ez dugu deitu getstring kontrakoa.
Inoiz ez dugu izan, funtzio bat bezala calll to ungetstring, non atzera eskua duzu
memoria hori.
Baina sinceramente dugu ziurrenik izan behar zuen.
Mantendu dugu ordenagailuan galdetuz Zeren memoria, norbaitek bezalako modu
getstring baina inoiz eman atzera, ziur aski, hori gehiegi da bound to ekar
Horren bidez, arazoak agortuko dugu memoria.
>> Eta, hain zuzen ere, horiek ahal dugun tresna berria, eta horren erabilera-arazoak
apur bat críptica idatzi da.
Baina aurrera me, eta zipriztintzen sortu besterik gabe, une batean pantailan.
Aurrera joan eta exekutatu Valgrind dut Parametro horren lehen komando batekin
lerroko izena da duen programa kaixo-2.
Eta, zoritxarrez, oso irteera da atrociously
ez da ona, arrazoi konplexuak.
Beraz, gaizki dagoela ikusi dugu.
David da nire izena aipatu.
Beraz, programaren benetan exekutatzen.
Eta orain, irteera hau lortu dugu.
>> Beraz Valgrind antzekoa da to GDB espirituz.
Ez da berez araztaileak bat.
Baina memoria checker bat da.
Programa bat zure exekutatu egingo da programatu eta esango galdetu baduzu
ordenagailuaren memoria entregatu eta inoiz ez da atzera, eta, beraz duzula zentzua
leak memoria bat.
Eta memoria filtrazioen joera txarra izan.
Eta ordenagailuen erabiltzaile izan da duzu ziurrenik sentitu hau, izan ala ez duzu
Mac edo PC bat.
Erabili izan duzu inoiz zure ordenagailuaren eta ez, berriz, hainbat berrabiarazi
egun, edo, besterik gabe duzun got asko programak exekutatzen, eta madarikatua gauza
egiteko artezteko geldialdi bat motelduz, edo, gutxienez, super gogaikarriak da erabili, izan ere,
dena besterik lortu super motela.
>> Orain dela arrazoi kopurua edozein izan daiteke.
Infinitua begizta, akats bat izan liteke norbaiten kodea, edo, besterik gabe, eta
ari zaren gehiago erabiliz, esan liteke memoria, edo saiatzen da, zure baino
ordenagailua du, benetan.
Eta, agian, beste programa batzuk akats bat da memoria hori mantentzeko eskatuz.
Urte nabigatzaile ziren notorio for hau, memoria gero eta gehiago eskatzen
baina inoiz ez da gozamenerako.
Ziur asko, besterik ez baduzu finitu bat memoria, ezin duzu eskatu
infinituki asko aldiz memoria duten batzuk.
>> Eta, beraz, hemen zer ikusten duzu, nahiz eta berriro Valgrind irteera da
alferrik konplexua begiratu at Lehenengo, interesgarri hau zatia da.
Montón -
irtetean erabiltzen.
Beraz, hemen zenbat memoria zen zeure erabilera honetan;
denbora nire programa amaitu da -
itxuraz sei bloke bat byte.
Beraz, nire esku olatu noa zer at bloke bat da.
Uste da, besterik gabe pusketa bat, bat gehiago zatia hitz teknikoak.
Baina sei byte -
Zein dira sei byte duten ziren oraindik erabileran?
>> Zehazki.
D-A-V-I-D backslash zero, bost gutun izena + null amaiera da.
Beraz, programa honen Valgrind nabaritu dut sei byte eskatu, itxuraz, erabiltzaileak
getstring modu bat, baina inoiz ez bizkarra eman zien.
Eta, hain zuzen ere, hau ez da, beraz, begi-bistakoa da nire programa ez da hiru
lerroak, baina 300 lerro da.
Beraz, benetan, ezin dugu eman komando beste lerroko nahi Valgrind
make it more verbose.
Apur bat gogaikarria da gogoratzen.
Baina nik ez bada -
ikus dezagun.
Leak -
Zen Leak -
are gehiago, ez dut gogoratzen zer da eskuz egiten.
>> - Leak check-berdin betea.
Bai, eskerrik asko.
- Leak check-berdin betea.
Sartu.
Berean, programa exekutatzen ari da.
David Idatzi berriro.
Orain pixka bat xehetasun gehiago ikusten dut.
Baina zeure beheko laburpenean, eta horrek da, lau berdin-berdin - Ah,
hau polita mota da.
Orain Valgrind benetan bila pixka bat nire kodean gogorragoa da.
Eta hori da esaten, antza denez, lerroan malloc -
Zooma dugu.
Lerroan -
ez dugu ikusten zer lerroa da.
Baina malloc lehen culprit da.
Ez dago malloc blog-a da.
>> Guztiak eskubidea?
Ados, ez.
Eskuin?
Getstring deitu nuen.
getstring itxuraz deiak malloc.
Beraz, zer kode-lerro itxuraz izateagatik errua at
egotzitako memoria hau?
Demagun duenak idatzi malloc ha sido inguruan nahikoa luzea dela
ez da bere errua.
Beraz, ziurrenik, ez da nirea.
cs50.c en getstring - hori da, beraz, artxibatzen nonbait ordenagailuan -
line 286 dirudi erruduna izango da.
Orain Demagun cs50 izan dela denbora duin zenbatekoa, beraz, inguruan
gehiegi dugu erasoezinak.
Eta, beraz, seguruenik ez getstring en bug duten datza, baizik eta en
kaixo-2.c line 18.
>> Hargatik begirada batean zer linea 18 izan zen.
Oh.
Nolabait, lerro hau ez da zertan buggy, berez, baina arrazoia da
memory leak duten atzean.
Beraz, super, besterik gabe, zer egingo intuizioa konponbidea hemen?
Ari gara memoria galtzen eskatuz, ez ziren inoiz bizkarra emanez, eta badirudi bat izan nahi
Arazo denbora nire ordenagailuan baino gehiago delako agortuko baliteke memoria, agian motela
behera, gauza txarrak gerta liteke, bai, zer simple intuitiboa da irtenbidea?
Eman besterik ez du atzera.
>> Nola askatu duzun memoria hori?
Beno, zorionez, nahiko erraza da besterik esan free izena.
Eta inoiz ez dugu hau egin aurretik.
Baina, funtsean, ezin duzu uste malloc kontrakoa da doan.
free kontrakoa da memoria esleitzean.
Beraz, orain utzi hau konpilatu me.
Egin kaixo-2.
Utzi exekutatu berriro. kaixo-2 David.
Beraz, lan egiten hasi dela dirudi zehazki modu berean.
Baina joan nintzen itzuliz gero Valgrind eta berriro exekutatu nire berri den komandoa berean
konpilatutako programa, mekanografia nire aurretik izen -
politak.
Montón laburpena -
irtetean erabiltzen -
zero bloke zero byte.
Eta hau super polita da, guztiak zeure bloke askatu zituzten.
Filtrazioen ez dira posible.
>> Beraz, datozen, ez da arazo Set 4, Baina arazoa Ezarri 5, auzitegi batera
eta aurrerantzean, hori ere izango da zure zuzentasuna neurri
programa, ala ez duzu edo ez dute memoria filtrazioak.
Baina, zorionez, ez bakarrik dezakezu Arrazoia Horietako intuizioa, horren bidez,
da, dudarik gabe, programa txiki erraza baina programak handiagoa zailagoa da,
Valgrind, horiek handiagoak programetan, zu identifikatzeko lagungarria izan daiteke
bereziki arazoa.
>> Baina bada beste arazo bat da agian sortzen.
Let me ireki fitxategia hemen, hau da, berriro ere, zertxobait adibide erraz bat.
Baina zer zentratu programa honek.
Hau deitzen da memory.c.
Etiketa geroago, gaur egun honetan dizugu en gaur egun, iturburu-kodea zip.
Eta nabarituko dute I izeneko funtzio bat f duten argumentu eta
itzultzen ezer.
Linea 20, itxuraz naiz geratuko to int bat eta x deituz erakuslea.
Esleitzea dut bueltan da malloc balioa.
Eta besterik gabe, argi eta garbi izan behar du, zenbat byte am Itzuli ziurrenik ditut malloc tik
egoera horretan?
>> Seguruenik, 40.
Non, hori lortzeko duzu?
Beno, gogoratzen baduzu int bat da, sarritan 4 byte, gutxienez, ez da bertan
tresnaren, 10 aldiz 4 da, jakina, 40.
Beraz malloc helbide itzuli bat memoria zatia eta gordetzeko duten
aurre, azken finean, x.
Beraz, argi izan, zer gero, gertatzen ari da?
Beno, goazen atzera aldatzeko me gure argazki hemen.
Let besterik ez dit nire marrazteko behealdean ordenagailuaren memoria, let me aurrera eta
marraztu laukizuzen osoan duten adierazten nire RAM guztia.
>> Esan dugu pila duen behean dago.
Eta ez dago testu segmentu bat hasi uninitialized datuak.
Baina besterik ez dut abstraktu horiek joan beste gauza batzuk ihes dot, dot dot gisa.
Besterik ez naiz honen erreferentzia joan goialdean zeure gisa.
Eta, ondoren, irudi hau behealdean, nagusia irudikatzeko, joan naiz
emateko xerra memoria pilan.
F, emateko xerra bat dut pila buruzko memoria.
Orain, nire kontsultatu dut iturburu-kodea berriro.
Zer dira nagusia aldagai lokala?
Antza denez, ez da ezer, eta, beraz, hau da xerra eraginkortasunez hutsik dago edo ez, nahiz eta handi gisa
Nik dudan bezala marraztuko da.
Baina f, tokiko aldagai bat daukat, hau da, x deitu.
Beraz, aurrera eta F dut bat memoria zatia da, x deituz.
>> Eta orain, 10 aldiz 4 malloc, Malloc 40, non da, beraz,
memoria datozen?
Ez dugu marrazten irudi bat like honen aurretik.
Baina dezagun hori eraginkortasunez Hemen etorritakoak, beraz,
bi, hiru, lau, bost.
Eta orain, horietako 40 behar dut.
Beraz, besterik ez dut egin dot, dot, dot iradokitzen ez dagoela, are gehiago da memoria
atzera datozen zeure hasita.
Orain zer helbidea da?
Dezagun gure aukeratu arbitrarioak aurre, beti bezala -
Ox123, nahiz eta seguruenik joan Zerbait guztiz ezberdina izango da.
Hori byte lehen helbidea da memoria duten malloc dut galdetu.
>> Beraz, azken finean, behin lerro 20 exekutatzen du, zer da, hitzez hitz
x barruan gordetzen dira hemen?
Ox123.
Eta idi da izanarren.
Esan nahi du, besterik ez da hemen bat hamaseitarra kopurua.
Baina, zer da garrantzitsua da zer esan denda dut x, eta horrek tokian tokiko aldagai bat da.
Baina, bere datu-mota, berriz, int baten helbide bat da.
Beno, Ox123 gorde nahi dut.
Baina, berriro ere, hori da apur bat ere bada konplexua alferrik, joan badut
atzera, abstraktua dugu hau nahiko urrun arrazoiz eta besterik esan x dela
memoria zatia duen erakuslea.
>> Ados.
Orain esku galdera honako hau da: -
linea 21, bihurtzen da, buggy da.
Zergatik?
>> Sentitzen dut?
Ez du -
esan berriro.
Beno, ez da doan.
Beraz, bigarren da, baina.
Beraz, ez da beste bat, baina zehazki line 21.
>> Zehazki.
Kode-lerro hau sinple bat besterik ez da bufferraren gainezkatzea, buffer bat inbaditu.
Buffer bat besterik memoria pusketa bat esan nahi du.
Baina memoria zatia duten tamaina 10, 10 osokoak, eta horrek esan nahi dugu
sartu indizea sintaktiko azukrea erabiliz array idazkera du, plazan
Parentesi, sarbidea izango duzu parentesi x 0 x 1 x egokirik,
parentesi dot, dot, dot.
x 9 tarte handiena da.
Hala bada tarte x 10, egiten dut, non Benetan ari naiz memorian joan?
>> Beno, izan dut 10 int bada -
dezagun benetan marraztu guztiak horiek hemen.
Beraz, lehen bost izan zen.
Hona hemen beste bost ints.
Beraz, tarte x 0 da hemen. x tarte 1 hemen. x tarte 9 da hemen. x-tarte
10 Hemen da, eta horrek esan nahi du, kontatzen dut, linea 21, ordenagailua jarri
zenbakia, non?
Kopurua 0 non?
Beno, 0 da, bai.
Baina, hain zuzen ere, bere 0 kointzidentzia moduko bat da.
Zenbakia izan daiteke 50, denok zaindu.
Baina jarri x tarte ari gara saiatzen 10, hau da, non honetan
galdera ikurra marrazten da, eta horrek ez da gauza ona.
Programa hori oso ondo ondorioz, huts.
>> Orain, aurrera ikusi eta hau bada da, hain zuzen ere, zer gertatzen den.
Ziurtatu memoria, geroztik fitxategia deitzen da memory.c.
Goazen aurrera eta exekutatu programaren memoria.
Beraz, zortea lortu dugu, benetan, dirudienez.
Zorioneko lortu dugu.
Baina ikus dezagun orain exekutatu bada Valgrind.
Lehen begiratuan, nire programa agian Badirudi ezin hobeto zuzena izan behar du.
Baina utzi niri exekutatu duen Valgrind - Leak check-berdin memoria beterik.
>> Eta orain, hori exekutatu I -
interesgarria da.
Tamaina baliogabea 4 idazteko at linea 21 memory.c du.
Line 21 memory.c zein da?
Oh, interesgarria da.
Baina itxaron.
Tamaina 4, zer da hori aipatuz?
Ez zuen besterik ez dut bat idatzi, baina tamaina 4 da.
Zergatik da 4?
Int da beti, eta hori da, zeren da, berriz ere, lau byte.
Beraz Valgrind akats bat aurkitu dut, nire kodea at glancing, ez.
Eta, agian, zure TF litzateke edo ez litzateke izango.
Baina ziur zer aurkitu horretarako Valgrind egin dugu akats bat dago, nahiz eta
genuen zorterik izan arren, eta ordenagailua erabaki du, eh, ez dut huts joan
besterik ez delako bat byte, bat ukitu duzu int memoria merezi ez duzula
benetan egin.
>> Beno, zer gehiago da buggy hemen.
Helbidea -
hau zoro bat bilatzen helbidea ez da hamaseitarrean.
Dagoela esan nahi du, besterik gabe, zeure nonbait dago zero ondoren tamaina 40 bloke bat byte
esleitu.
Let me zooma hemen, eta ikus hau da, pixka bat gehiago lagungarria da.
Interesgarria da.
40 byte dira behin betiko galdu galera erregistroa 1 de 1.
Berriro ere, hitzak baino gehiago erabilgarria da hemen.
Baina nabarmendu lerro oinarritzen da, non fokua ziurrenik behar dut nire
bug beste arreta?
Lerro bat 20 memory.c baten itxura du.
>> Beraz, bada, atzera egingo dugu lerro 20, hori da bat lehenago identifikatu duzu.
Eta ez da akatsak egotea.
Baina hau dugu, alderantziz, bere ondorioak.
Beraz, nola ez, behintzat, zuzendu dut akats horietako bat?
Zer egin liteke linea 21 I ondoren?
Do x libre nuen, beraz, atzera emateko memoria hori.
Eta, nola ez, bug hau konpontzen dut?
Behin betiko behar dut joan no urrunago 0 baino.
Hargatik, eta saiatu me berriro exekutatu.
Sentitzen dut, behin betiko joan no urrunago 9 baino.
Ziurtatu memoria.
Orain berrabiarazi Valgrind handiagoa leihoan.
Eta orain begiratu.
Niza.
Zeure bloke guztiak askatu ziren.
Filtrazioen ez dira posible.
Eta hemen, batez ere, ez dago aipamenik ez da baliogabe eskubidea gehiago.
>> Just Greedy lortzeko, eta egin dezagun Ikus erakustaldi bat baduzu
ez du joan nahi -
Zorioneko lortu nuen une bat duela.
Izan ere, hori da, agian, 0 alferrik engainagarria.
Dezagun, besterik gabe, egin 50, pixka bat arbitrarioa zenbakia, memoria egin dot barra memoria -
oraindik lortu zortea.
Ezer ez da bertan behera gelditzen.
Demagun egin dut zerbait inozoak, eta 100 dut.
Let memoria remake me, dot barra memoria -
lortu zortea berriro.
Nola 1.000?
ints haratago, gutxi gorabehera, non egon behar dut?
Ziurtatu memoria -
madarikatua da.
>> [Barreak]
>> Ados.
Ez dezagun mezurik inguruan jada.
Berrabiarazi memoria.
Ez dago goaz.
Guztiak eskubidea.
Beraz, itxuraz 100.000 ints indizea duzu non izan behar duzu izan haratago
memoria, gauza txarrak gertatuko dira.
Beraz, hau da, jakina, ez da gogor, azkar araua.
Trial erabiliz mota izan dut eta akats iritsi.
Baina honetan ere, luze istorio labur, ordenagailuaren memoria ere banatzen
gauza horiek sartu izeneko segmentu.
Eta batzuetan, ordenagailua benetan eman duzu, pixka bat gehiago memoria
baino eskatuko dizu.
Baina eraginkortasuna, besterik gabe, errazagoa da memoria gehiago lortzeko, baina bakarrik esango
zaren zati bat lortzeko.
>> Eta lortu duzu zortea izanez gero, batzuetan, beraz, egin ahal izango dute ukitu dezake
memoria ez dela zurea.
Bermea ez daukazu zer balio duten han bertan geratuko dira jartzen, izan ere,
ordenagailua ustez oraindik ez da zurea, baina ez da nahitaez joan
memoria segmentu beste hit-en informatika eta akats bat bultzatu bezalako
hau hemen.
Guztiak eskubidea.
Edozein galdera, ondoren, memoria-on?
>> Guztiak eskubidea.
Ikus dezagun hemen, beraz, at zerbait gara for hartuz
denbora luzez emango du, eta horrek izeneko cs50.h. fitxategi hau da,
Beraz, hau fitxategi bat da.
Hauek osotasunean mordo bat dira top sortu iruzkinak.
Eta hau izan bada, baliteke begiratu inguruan poked duzun tresnan.
Baina bihurtzen da hori denbora guztian, denean katea erabili behar bezala erabiltzen ditugu
sinonimo, bide horren bidez, deklaratu dugu duten sinonimo hau izan zen
keyword mota definizioa, typedef.
Eta, funtsean, esaten ari gara, egin katea izar char sinonimo.
Esan nahi du horren bidez, pila sortu ezaguna prestakuntza gurpil horiek
katea.
>> Orain hemen prototipoa besterik ez da getchar da.
Ikusi dugu, agian, baina hori da hain zuzen ere, zer egiten. getchar
argumentu, karaktere bat itzultzen du.
getdouble argumentu, itzultzen bikoitza.
getfloat argumentu, itzultzen mugikor bat, eta abar.
getint hemen dago. getlonglong Hemen dago.
Getstring eta hemen dago.
Eta kito.
Morea lerro hau Preprocessor bat da delako direktiba
it hasieran hashtag.
>> Guztiak eskubidea.
Beraz, orain utzi cs50.c. sartu me
Eta ez dugu hitz luzeegia honetan.
Baina emateko zer ohi bat izan da hori guztia gertatzen ari da
denbora, utzi zidan -
dezagun getchar.
Beraz getchar gehienbat iruzkinak.
Baina itxura hau atsegin du.
Beraz, gaur egun, hau da, getchar dugun izan
emandako hartzen lehendik.
Eta, hala ere, ez dugu hau erabili ko sarritan, inoiz bada, gutxienez da
nahiko erraza da.
Bat da, beraz, merezi du hemen begirada.
>> Beraz getchar infinitua begizta bat du, nahita, beraz, itxuraz.
Deiak gero - eta, hau da, mota kodea berrerabilpena polita dugu idatzi.
Getstring deitzen da.
Zer ez duelako esan nahi karaktere bat lortzeko?
Beno, bai, agian saiatu bat lortzeko oro har, testu-line erabiltzaileak eta
ondoren, bat besterik begiratu karaktere horien.
Linea 60, hemen apur bat behatu txeke bat pixka.
Getstring itzuli null bada, Ez dezagun jarraitu.
Zerbait gaizki joan da.
>> Azken hau samarra da gogaikarriak baina C. karaktere max seguruenik ohiko
adierazten du zer bere izena oinarritutako?
Konstante bat da.
Da duen zenbakizko balioa bezalakoa da handiena karaktere irudikatzeko dezakezu
mokadu bat, hau da, ziurrenik kopurua 255, horietatik handiena zenbakia da
irudikatzeko zortzi bit, zero hasita.
Beraz, hori erabili dut, funtzio hau, noiz kode hau idazten, soilik
zerbait getchar bada, baina oker bere bizitzako helburua da itzultzeko
char, nolabait gai izan behar duzu, Erabiltzaile duen seinalea
Zerbait gaizki joan da.
Ezin dugu itzultzeko null.
Bihurtzen da nulua duten erakuslea da.
Eta berriro ere, getchar du karaktere bat itzultzeko.
>> Beraz, batzarra, zerbait galtzen doa gaizki, ez da programatzailea, edo, zuk
Kasu honetan, ni liburutegi batera, nuen bat besterik ez arbitrarioki erabakitzen bada,
zerbait oker, noa itzultzeko kopurua 255 da, hau da, benetan
Beraz, ezin dugu, erabiltzaileak ezin idatzi ordezkatzen pertsonaia
kopurua 255 izan dugulako bat lapurtu du bat deiturikoak Sentinel balioa gisa
irudikatzeko arazo bat.
Orain bihurtzen da pertsonaia hori 255 ez da zerbait idatzi ahal izango duzu
zure teklatua, beraz, big deal ez da.
Erabiltzaileak ez du nabarituko dela Lapurtu dut pertsonaia hau.
Baina inoiz gizon bat orrialdeetan bada ikusteko informatika-sistema baten erreferentzia batzuk
guztiak konstante bezala txanoak dela dio, error etengabeko agian hau kasuetan
dira itzuliko, giza batzuk egin dena urte zen arbitrarioki erabaki
itzultzeko berezi honen balioa eta deitu kasuan konstante bat
zerbait oker.
>> Orain magia behera gertatzen da hemen.
Lehenik eta behin, lerroa 67 geratuko naiz bi pertsonaia, C1 eta C2.
Eta, ondoren, 68 lerro, ez da benetan , kode-lerro hori gogorarazten du
gure lagun printf, eman duen Cs berea izan ez komatxo artean.
Baina konturatzen zer ari da gertatzen hemen. sscanf katea eskaneatu esan nahi du -
esan nahi eskaneatu formatuko bat katea, ERGO sscanf.
Zer esan nahi du?
Kate bat sscanf pasatzen duzun esan nahi du.
Lerroa da eta edozein dela ere Erabiltzaile mota sartu
Formatu katea bezala sscanf pasatzen duzu hori kontatzen scanf zer dira
mesederako erabiltzaileak idatzitako sartu
Igaroko da-, orduan, bi helbideak memoria zatiak, kasu honetan,
daukat bi leku delako.
Beraz emateko helbidea noa C1 eta C2 du helbide.
>> Eta gogoratzen eman duzula funtzio bat aldagai batzuen helbidea, zer
inplikazioa?
Zer egin daiteke funtzio baten ondorioz egin emanez baten helbide
aldakorra, baita aurka aldagai bera?
Aldatu ahal izango da, ezta?
Izan duzu norbait fisiko baten mapa bat bada helbidea, joan ez daitezen eta zer
edozein dela ere nahi helbidea dute.
Ideia bera hemen.
To sscanf, bi helbide gara pasatzen bada memoria zatiak, nahiz eta txiki-txiki horiek
gutxi memoria, C1 eta C2-ko zatiak, baina esan dugu horietako helbidea,
sscanf aldatu dezakezu.
>> Sscanf bizitzako helburua, beraz, irakurtzen badugu man orria, da zer irakurri
Erabiltzaile idatzitako batean, erabiltzaile izatea espero pertsonaia bat, idatzitako eta agian
beste pertsonaia bat, eta edozein dela ere, erabiltzaileak idatzitako, lehen karaktere doa
Hemen, bigarren pertsonaia doa hemen.
Orain, bat alde batera bezala, horrek, eta duzun bakarrik ezagutzen hau dokumentazioa batetik,
Izan ere, hori jarri dut leku huts batean dago esan nahi du, besterik ez ditut zaintzen bada
erabiltzailea Space barra hits gutxira aldiz aurretik berak hartzen du bat
pertsonaia, ez ikusi egin nahi dut zuri edozein espazioa.
Da, beraz, eta ezagutzen ditut dokumentazioa.
>> Izan ere, ez da bigarren% c da hutsune eta ondoren benetan
nahita.
Antzemateko gai izan nahi dut egiten badu screwed sortu edo ez laguntzea.
Beraz, erabiltzaileak bakarrik idatzitako dut pertsonaia bat da, beraz, espero dut
duten sscanf bakarrik dago itzultzeko joan 1 balioa, berriz, delako irakurri badut
dokumentazioa, sscanf en helburua bizitza izateko kopuruaren itzultzeko
aldagai ziren bete erabiltzailearen sarrera batera.
>> Gainditu bi aldagai dut helbideak, C1 eta C2.
, Espero dut, nahiz eta, bat besterik ez du horiek erabat hil galtzen delako sscanf
funtzioak 2 itzultzen du, zer da zentzuzkoa inplikazioa logikoki?
Erabiltzaileak ez du besterik ematen dit bat pertsonaia bezala kontatu nion edo bere.
Idatzitako seguruenik at Gutxienez bi pertsonaiak.
Beraz, bada, zuen ordez dut, ez dute bigarren % C, izan besterik ez dut, eta horrek
sinceramente intuitiboagoa izango litzateke hurbilketa, lehen begiratu batean, uste dut,
ez duzu antzemateko gai izango erabiltzailea izan baduzu, gehiago ematen
sarrera baino benetan duzu nahi.
Beraz, hau inplizitua forma bat da error egiaztatzea.
>> Baina konturatu hemen zer egiten dut.
Behin ziurtatu erabiltzaileari eman zidan bat naiz pertsonaia, lerro askatzeko nuen, egiten ari
getstring da kontrakoa, eta horrek malloc erabiltzen ditu, eta, gero, itzuliko dut
C1, pertsonaia hori espero dut Erabiltzaileak emandako eta bakarrik ematen da.
Beraz, azkar bat glimpsed bakarra, baina getchar buruzko edozein galdera?
Itzuli beharko dugu beste batzuk.
>> Beno, goazen aurrera, eta niri hori egin - demagun orain, besterik gabe, gure motibatzea
aste bat gehi denbora eztabaida, hau structs.h izeneko fitxategi bat da.
Eta berriro ere, hau da, zapore zerbait datza aurretik.
Baina iragarki asko hau iruzkin bat da.
Hargatik me nabarmendu bakarrik oraingoz parte interesgarria.
typedef -
han berean, gako-hitz hori berriro.
typedef kate adierazteko erabiltzen dugu datu-mota berezi gisa.
Typedef erabili dezakezu marka berria sortzeko datu-mota hori existitzen ez denean
C asmatu zen.
Esate baterako, int C. char dator dator C. bikoitza C. dator, baina
Ikasle bat ez kontzeptua ez da.
Eta oraindik nahiko erabilgarria izango litzateke gai-programa bat gordetzen duten idazteko
aldagai batean, ikaslearen NAN zenbakia, bere izena, eta beren etxea.
Bestela esanda, hiru pieza datuak, nahi int bat eta
katea eta string bat.
>> Typedef, zer da nahiko indartsua hau eta keyword sturct buruz
egitura, duzu, 2013an programatzailea, benetan zehaztu egin du
datu-mota hori ez da existitzen urte duela, baina hori egokitzeko zure helburuetarako.
Eta, beraz, hemen, lineak 13 19 bidez; berri bat datu-mota deklaratzen ari gara, adibidez,
int bat, baina ikaslea deituz.
Eta aldagai horren barruan dago, joan int bat, kate bat, - hiru gauza izan
eta kate bat.
Beraz, zer da benetan pentsa dezakezu Hemen gertatu zen, nahiz eta hori bat
sinplifikazio bat pixka gaur, Ikasle bat da, funtsean, joan
horrela begiratu.
Bere pusketa bat izango ID bat duen memoria, izen bat
eremuan, eta etxeko eremu bat.
Eta gai izango horietako zatiak erabili dugu memoria eta bertan sartzeko honela.
>> Struct0.c sartu nintzen gero, hemen da nahiko luzea da, baina bat jarraituz
eredua, kodea duten berriak trikimailu hau erabiltzen du.
Beraz, lehenik eta behin, utzi zure atentzioa me Gora gora zati interesgarriena.
Zorrotz definitzen ikasle 3, deklaratzen bat etengabeko izeneko ikasle eta lagapen
it arbitrarioki 3 zenbakia, besterik beraz, hiru ikasle izan nuen
Gaur egun, programa honetan.
Hemen dator nagusian.
Oharra eta, nola ez dut deklaratzeko ikasle sorta bat?
Beno, erabili besterik ez dut bera sintaxia.
Hitza ikaslea da, jakina, berria.
Baina ikaslea, klasea, tarte ikasleak.
>> Beraz, tamalez, ez da asko terminoak hemen berriz.
Hau besterik ez da zenbaki bat.
Beraz hau hiru esaten duena bezalakoa da.
Klase besterik ez da zer nahi dut aldagai deitzeko.
Deitu ikasleek nuen.
Baina klasea, hau ez da klase bat objektu bideratutako Java moduko bidea.
Besterik ez da, ikasleek klasean.
Eta elementu bakoitzaren datu mota array hori da ikaslea.
Beraz, hau da, pixka bat ezberdinak eta zerbait esaten hasita
horrela, besterik ez da -
Ematen dit hiru ikasle naiz esaten eta deitu array-klase hori.
>> Guztiak eskubidea.
Orain hemen lau begizta bat da.
Guy honen ezagunak - batetik bestera joateko zero-tik gora, hiru.
Eta hemen sintaxia pieza berria da.
Programa horrek niri galdetuko joan, giza, emateko, ikasle batek
NAN, zein int da.
Eta hemen sintaxia duen ahal duzun da gordetzeko zerbait ID eremuan at
kokapena klasea parentesi I. So sintaxia hau ez da berria.
Honek esan nahi du, besterik gabe, ematen dit zortzigarren klase ikaslea.
Baina sinbolo berria da.
Orain arte, ezin dugu erabili ez dot, gutxienez, hau bezalako kodea.
Honek esan nahi du ezagutzen egitura gisa joan ikasle bat eta zerbait jartzea.
Era berean, hau da, hurrengo lerroan, 31, joan Animatu eta jarri edozein izanik ere, erabiltzaileak motak
izen bat hemen eta zer egiten dute bat house, gauza bera, aurrera eta
ipini. etxean.
>> Beraz, zer programa honek Azken finean, zer egin?
Pixka bat teaser han ikusi ahal izango duzu.
Dezagun aurrera ni eta structs egin dezaket 0 dot barra egiturari 0, ikaslearen identifikazio 1,
esan David Mather, ikaslearen 2.
Rob Kirkland, ikaslearen 3.
Lauren Leverit -
eta gauza bakarra egin zuen programa hau, hau da, besterik gabe, erabat arbitrarioa da,
Zerbait egin behar datuak honekin nahi nuen, orain dela irakatsi digu dut nola
erabili structs da, izan besterik ez dut hau aparteko begizta hemen.
Batetik bestera joateko ikasleek array gainean nuen.
Gure, agian, gaur egun ezagutzen lagun nituela, katea alderatu, stircomp to
check 8an ikaslearen etxea to Mather berdinak?
Eta hala bada, besterik gabe, zerbait inprimatu inori gustatzen, bai, da.
Baina, berriro, nire aukera emanez erabili eta berrerabiltzeko eta
berrerabiltzea berri honen dot idazkera.
>> Beraz, nork zaintzen du, ezta?
Datozen ikasle-programa bat da, zertxobait arbitrarioa da, baina bihurtzen da
erabilgarria duten gauzak egiten dugun dezake honetan, esate baterako, honela.
Hau askoz zailagoa da, eta egitura C. da zer lortu dozena bat edo gehiago eremuak,
zertxobait cryptically izendatu.
Baina duzun inoiz bada grafiko bat entzun fitxategi formatu izeneko bitmap, BMP da
bihurtzen da bit fitxategi formatua da, hau nahiko askoz duten itxura.
Apur bat ergela Smiley aurpegia da.
Irudi txiki bat da ditudan en handitutako nahiko handia dela, beraz, bakoitzak ikusi izan dut
puntuak banaka edo pixel.
Orain, bat dugu irudikatzeko out dezakezu bihurtzen da , esan du, kopurua 0 puntu beltzak.
Eta kopuruak 1 eta puntu zuri bat.
>> Beraz, beste era batera esanda, nahi baduzu bat marrazteko Smiley face eta irudi hori gorde
ordenagailua, zero gordetzeko eta nahikoa direnak itxura hau, non,
berriro ere, zeintzuk dira zuri zeroen eta beltzak dira.
Eta horrekin batera, modu eraginkorrean baduzu bat ere bai, eta zeroen de gird, bat duzu
pixel-sareta, eta zelatan baduzu itzazu, polita izango duzu
apur Smiley face.
Orain, bit fitxategi formatua, BMP da eraginkorrean duten kanpaia azpian,
baina pixel gehiago Sot egiten duzun hori benetan adierazten koloreak.
>> Baina sofistikatuagoa behar duzu BMP fitxategia eta JPEG eta GIF bezalako formatu
zein izan ezagutzen dituzu, agian, horiek diskoko fitxategiak, normalean, ez bakarrik
izan zero eta pixel egiteko ere bai, baina metadatu batzuk dituzte, bai -
zentzua ez dela benetan en meta datuak, baina erabilgarria da behar.
Beraz, eremu horiek dira hemen, eta ulertuta hau ikusiko dugu P-multzoan xehetasun gehiago
5, hori zero eta bai horren aurretik adierazten irudi batean pixel,
ez metadatuak mordo bat bezala irudiaren tamaina eta
irudiaren zabalera.
Eta konturatu naiz off plucking batzuk arbitrarioak gauzak hemen -
zabalera eta altuera.
Bit kopuruan eta beste gauza batzuk.
Beraz, fitxategi batean metadatu batzuk.
>> Baina, nola banatuta dauden fitxategiak ulertzeko arabera Modu honetan out, benetan dezakezu
manipulatu ondoren, irudiak, irudiak berreskuratu diskotik, irudien tamaina aldatu.
Baina ezin duzu nahitaez horiek hobetzeko.
Argazki bat behar nuen.
Beraz, atzera joan nintzen RJ hemen, nork ikusi pantailan, nahiko denbora pixka bat duela.
Eta ireki nuen bada Keynote hemen, hau da, zer gertatzen saiatu duzu hurbiltzeko bada eta
RJ hobetzeko.
Ez du inolako hobea, benetan.
Orain Hitzaldi bat lausotzen mota da pixka bat, besterik ez gainetik distira
Izan ere, RJ ez dela bereziki hobetua sartu denean txikiagotzen
Eta horrela egin bada, ikusi laukitxo?
Bai, zalantzarik gabe, ikusiko duzu on proiektore bat laukiak.
>> Horixe duzunean hobetzeko lortu duzu.
Baina ulertzeko nola gure RJ edo Smiley face ezartzen digu utziko
Egia esan, idatzi kodea duten manipulatu gauza horiek.
Eta ohar honetan amaituko nuke pentsatu nuen, eta 55 bat segundotan hobetu dela,
, Ausartzen naiz esaten, baizik eta nahasgarria da.
>> [Bideo-erreprodukzioa]
>> -Egin zuen, etzanda.
Zeri buruz, ez dakit.
>> -Beraz, zer dakigu?
>> -Hori 9:15 Ray Santoya at Kutxazain zen.
>> -Beraz, galdera da zer egiten ari zen, 9:16 etan zuen?
>> -Filmaketa bederatzi milimetro du zerbait.
Agian frankotiratzaile ikusi zuen.
>> -Edo zen berarekin lanean.
>> -Itxaron.
Joan atzera bat.
>> -Zer ikusi?
>> -Ekarri bere aurpegia gora, pantaila osoan.
>> -Bere betaurrekoak.
>> -Bada, gogoeta bat da.
>> -Hori Neuvitas beisbol taldea da.
Hori da beren logo.
>> -Eta nahi duenak egin zuen hitz egiten jaka jantzita dagoela.
>> [END bideo-erreprodukzioa]
>> David J. MALAN: Hau izango da Arazoa Ezarri 5 izango da.
Baduzu, ikusiko dugu datorren astean.
>> GIZONEZKOEN Hizlaria: hurrengo CS50 At.
>> [Kilkerrak CHIRPING]
>> [Musika jotzen]