[సంగీతాన్ని] డేవిడ్ J. మలన్: అన్ని కుడి. [నవ్వు] స్వాగతము. ఈ CS50 ఉంది. మరియు ఈ వారం ఐదు ముగింపు. మరియు ఇప్పుడు వరకు, మేము చాలా చాలా చేసిన మంజూరు కోసం తీసుకోవడం ఉండనే మీరు ఈ కంపైలర్, గణగణమని ద్వని చేయు, ఉంది ఈ మార్గం ద్వారా ప్రారంభించడం జరిగింది ఇతర సాధనం అని ఏదో చేయండి అని అద్భుతంగా సోర్స్ కోడ్ మారుస్తుంది వస్తువు కోడ్, సున్నాలు మరియు వాటిని లోకి మీ కంప్యూటర్ల CPU, కేంద్ర ప్రాసెసింగ్ యూనిట్, నిజానికి అర్థం. ఈ సంఖ్య ఉంది బయటకు కానీ యదావశాత్తు లో హుడ్ కింద జరగబోతోంది ఇన్పుట్ మరియు అవుట్పుట్ మధ్య. మరియు నేను మేము మాంసం ప్రతిపాదించారు అవ్వాలనుకుంటే కొద్దిగా ఎక్కువ వివరాలను లో ఆ ఈ నాలుగు దశలు, అని ఏదో కలిగి ముందు ప్రాసెసింగ్, ఏదో మేము చూసిన ఇది సేకరించి, అని ఏదో ఏర్పాటు అని, మరియు ఏదో లింక్ అని. కాబట్టి ఇప్పుడు వరకు, మా యొక్క కొన్ని కార్యక్రమాలు, మేము పదునైన కలిగి ఉంది. ఇటీవల మేము కొన్ని పదునైన చేశాము స్థిరాంకాలు కోసం నిర్వచిస్తుంది. కనుక దీనిని మారుతుంది ఆ విషయాలు ఆ హాష్ చిహ్నం లేదా కలిగి ఉంటాయి పౌండ్ గుర్తు ప్రి ప్రాసెసర్ ఉన్నాయి మార్గదర్శకాలు. కేవలం అది తెలిపారు యొక్క ఫాన్సీ మార్గం నిజానికి ఆ కోడ్ యొక్క ఒక లైన్ ముందు ఏదో మార్చబడింది కంప్యూటర్ కూడా మార్చేందుకు ప్రయత్నించవద్దని మీ సున్నాలు మరియు వాటిని ప్రోగ్రామ్. ఉదాహరణకు, పదునైన ప్రామాణిక కలిగి I / O. H, అందంగా చాలా కేవలం వెళ్ళి అర్ధం ముందుకు, ఫైళ్లు విషయాలు పట్టుకోడానికి stdio.h మరియు అక్కడే పెట్టండి. అందువలన సున్నాలు మరియు వాటిని ఇంకా ఆ సమయంలో. ఇది నిజంగా కేవలం ఒక ప్రతిక్షేపణ వార్తలు. మరియు అని పిలవబడే సమయంలో ప్రదర్శనతో ముందు ప్రాసెసింగ్ దశ, మీరు నిజానికి ప్రత్యేకంగా గణగణమని ద్వని చేయు అమలు లేదా చాలా సందర్భాలలో చేయండి. సో ఈ జరుగుతున్న చెయ్యబడింది మొదటి స్వయంచాలకంగా ఇప్పటివరకు. అప్పుడు సంకలనం దశల వస్తుంది. కానీ మేము అతిగా సులభతరం చేసిన సంగ్రహం. ఒక ప్రోగ్రామ్ కంపైల్ నిజంగా అర్థం , సి ఏదో నమ్ము సోర్స్ కోడ్ మేము డౌన్, వ్రాస్తున్నానని చేసిన ఏదో అసెంబ్లీ అని కు. అసెంబ్లీ భాష తక్కువ స్థాయి భాష, అదృష్టవశాత్తూ, మేము లేదు చాలా సందర్భాన్ని చేశారు ఈ సెమిస్టర్ వ్రాయండి. కానీ అది తక్కువ స్థాయిలో ఉంది మీరు వాచ్యంగా రాయటం మొదలుపెట్టాలని అర్థంలో జోడించడానికి మరియు వ్యవకలనం మరియు గుణిస్తారు మరియు లోడ్ మెమరీ నుండి మరియు సేవ్ జ్ఞాపకార్ధం చాలా ప్రాథమిక సూచనలను ఒక కంప్యూటర్, హుడ్ కింద, నిజానికి అర్థం. చివరగా, నిర్మాణం ఆ భాష పడుతుంది మేము కూడా చేసిన సున్నాలు మరియు వాటిని ఇప్పటివరకు వివరిస్తూ. నిజంగా చివరగా, అని పిలవబడే ఉంది దశ లింక్, ఇది మేము చేస్తాము కలిపిన కేవలం ఒక క్షణం, లో చూడండి మీ సున్నాలు మరియు సున్నాలు ఉన్నవారు మరియు ముందు వాటిని ఇతర వ్యక్తులు మీరు సృష్టించారు. సో ఈ సూపర్ సాధారణ ప్రోగ్రామ్ పరిగణలోకి. ఇది వీక్ 1 నుండి. ఇది కేవలం, హలో, అన్నారు తెరపై. మేము గణగణమని ద్వని చేయు ద్వారా ఈ నడిచింది. లేదా మేము అది ద్వారా మేక్ అమలు ఇది గణగణమని ద్వని చేయు నడిచింది. మరియు సమయంలో outputted పేరు కొన్ని సున్నాలు మరియు వాటిని. అక్కడ అవ్ట్ కానీ యదావశాత్తు ఇంటర్మీడియట్ దశ. నేను ఇక్కడ వెళ్ళి ఉంటే - oops, కాదు ఇంకా అతనికి చూడాలనుకుంటే. నా ఉపకరణం ఇక్కడ వెళ్ళి ఉంటే మరియు నేను hello.c, ఇక్కడ ప్రారంభించిన అదే కార్యక్రమం. మరియు నేను నా టెర్మినల్ లో చేయ బోతున్నాను ఇక్కడ విండో నేను వెళుతున్న ఉంది , గణగణమని ద్వని చేయు అమలు కాకుండా చేస్తుంది అన్ని నాలుగు స్వయంచాలకం మాకు ఆ దశలను. మరియు నేను గణగణమని ద్వని చేయు-S చేయబోవడం మరియు వెబ్ ఎంటర్ తరువాత hello.c మరియు తరువాత. మరియు నేను ఒక మెరిసే ప్రాంప్ట్ పొందుటకు మళ్ళీ, ఇది మంచి. మరియు ఇప్పుడు కొద్దిగా పెద్ద విండోలో, నేను ఇక్కడ gedit తెరవటానికి వెళుతున్నాను. మరియు నేను, ఒక ఫైల్ తెరుచుకుంటుంది వెళుతున్నాను హాజరవుతారు, hello.s పిలుస్తారు అసెంబ్లీ భాష కలిగి నేను ముందు సూచిస్తారు. మరియు ఈ అసెంబ్లీ అని ఏమిటి భాష, బొత్తిగా తక్కువ స్థాయి సూచనలు మీ ఇంటెల్ CPU లేదా అది లోపల ఉంది అర్థం. మరియు MOV ఎత్తుగడకు ఉంది. కాల్ కోసం , చాలా తక్కువ స్థాయిలో చర్యను కాల్. ఉప తీసివేయి కోసం. మీరు లోపల ఒక ప్రత్యేక CPU దానిమూలంగా ఉన్నప్పుడు మీ కంప్యూటర్ యొక్క, అది చేస్తుంది న ప్రత్యేక ప్రతిగా ఇతర CPU లు మార్కెట్, ఇది సూచనలను అది అర్థం మరియు తరచుగా ఎలా సమర్థవంతంగా ఇది ఇది కొన్ని అమలు ఎంత వేగంగా ఉంది ఆ సూచనలను. ఇప్పుడు ఈ మరింత కోసం, మీరు పట్టవచ్చు కళాశాల తర్వాత పతనం CS61. కానీ ఇక్కడ మేము కొన్ని, ఉదాహరణకు, కలిగి తెలిసిన చూడండి ఉండవచ్చు గుర్తింపుదారులను. hello.c కార్యక్రమం పేరు. . టెక్స్ట్ - ఆసక్తి ఎక్కువ అక్కడ కాదు ఇప్పుడు, గుర్తు టెక్స్ట్ పేరు లో భాగం, సోమవారం నాటికి, ఉంది మెమరీ మీ ప్రోగ్రామ్ నిజానికి ముగుస్తుంది. తద్వారా కనీసం అస్పష్టంగా వార్తలు అక్కడ తెలిసిన. ఇక్కడ, కోర్సు యొక్క, ఒక ప్రస్తావన ఉంది మా ప్రధాన విధి యొక్క. డౌన్ స్క్రోలింగ్, ఈ విషయాలను సూచిస్తాయి పిలవబడే నమోదులను చిన్న రాళ్లను మీ వాస్తవ CPU యొక్క మెమరీ లోపల. మరియు నేను కూడా డౌన్ స్క్రోల్ చేయండి మరింత నేను కొంత చూడండి ASCII యొక్క పరోక్ష ప్రస్తావన. మరియు, నిజానికి, ఆ స్ట్రింగ్ ఉంది హలో, కామా, ప్రపంచ. చాలా కాలం కథ చిన్న, ఈ ఉంది , స్వయంచాలకంగా మీరు కోసం జరుగుతున్న హుడ్ కింద ఈ సమయంలో అన్ని. ఏ జరుగుతున్న చేయబడింది నిజంగా ఒకసారి ఉంది మీరు గణగణమని ద్వని చేయు అమలు, లేదా ద్వారా చేసిన , మీరు మొదటి పొందుతుంటే, చేయండి సోర్స్ కోడ్ నుండి, అసెంబ్లీ భాష అని పిలుస్తారు. అప్పుడు గణగణమని ద్వని చేయు ఈ అసెంబ్లీ మార్పిడి ఉంది డౌన్ సున్నాలు మరియు వాటిని భాష. మరియు ఈ మేము ప్రారంభించారు స్లయిడ్ ఉంది వారం 0 లో మా చర్చ - మరియు ఆ తరువాత వారం 1. మరియు ఆఖరికి, ఆ సున్నాలు మరియు వాటిని సున్నాలు మరియు వాటిని కలుపుతారు ఆ లైబ్రరీలు మేము తీసుకోవడం చేసిన ప్రామాణిక I / O లేదా వంటి మంజూరు కోసం స్ట్రింగ్ లైబ్రరీ లేదా CS50 లైబ్రరీ. సో మరింత ఈ చిత్రాన్ని చిత్రించడానికి దృష్టి, మేము hello.c కలిగి. మరియు అది, కోర్సు యొక్క, printf ఉపయోగిస్తుంది ప్రపంచ హలో, చెప్పటానికి పని. సంకలన అడుగు దానిని డౌన్ పడుతుంది ఫైల్ మేము కేవలం కూడా, hello.s చూసింది సాధారణంగా తొలగించబడింది అని అయితే స్వయంచాలకంగా మీరు కోసం. కానీ ఆ అసెంబ్లీ కోడ్ వార్తలు మధ్య దశలో. ఆపై మేము అసెంబ్లీ సమీకరించటం ఉన్నప్పుడు మీరు భాష, అలా మాట్లాడటం, ఆ ఆ సున్నాలు మరియు వాటిని పొందడానికి. కాబట్టి మేము నేటి సమర్థవంతంగా జూమ్ చేసిన ఏ మంజూరు కోసం మేము తీసుకోవడం చేసిన, సోర్స్ కోడ్ వెళుతున్న అర్థం కోడ్ వస్తువు. కానీ చివరకు ఇప్పుడు అదే చిత్రాన్ని - దాని పై బలంగా త్రోయు లెట్స్ ఎడమ వైపు. మరియు గమనించండి ఆ టాప్ లో ఉన్నాయి నేను stdio.h పేర్కొన్నారు. మేము చేర్చాను ఒక ఫైల్ యొక్క దాదాపు అన్ని లో మేము వ్రాయలేదు కార్యక్రమాలు. మరియు వీటి విషయాలు ఫైలు యొక్క కాపీ అతికించారు చేసుకోగా, సమర్థవంతంగా మీ కోడ్ పైన. అయితే, కంప్యూటర్ నుండి మారుతుంది సిస్టమ్ ఎక్కడో బహుశా ఒక ఉంది ఎవరైనా సంవత్సరాల వ్రాసాడు stdio.c ఫైలు క్రితం ఆ అన్ని అమలు ప్రకటించారు క్రియలు stdio.h లో. ఇప్పుడు వాస్తవానికి అది బహుశా కాదు లేదా మీ Mac లేదా మీ PC CS50 ఉపకరణం ఒక ముడి సి కోడ్. మరొకరు ఇప్పటికే అది సంకలనం మరియు కూడా . ఓ వస్తువు కోడ్ ఫైల్ లేదా. ఒక ఒక భాగస్వామ్యం లైబ్రరీ సూచిస్తుంది ఫైల్, ముందు ఇన్స్టాల్ మరియు చేయబడింది మీరు ముందే సంకలనం. కానీ నిజానికి ఉందని అనుకుందాం సమాంతరంగా మా కంప్యూటర్ stdio.c న గణగణమని ద్వని చేయు తో. మీ కోడ్ కంపైల్ చేయబడిన మరియు సమావేశం. stdio.c 's కోడ్ కంపైల్ చేశారు సమావేశమయ్యారు ఈ ఆఖరి ఆ ఇక్కడ డౌన్, దశను, మేము ఏదో ఉంటుంది లింక్, మాట్లాడటానికి, మీ సున్నాలు మరియు వాటిని ఒక తన లేదా ఆమె సున్నాలు మరియు వాటిని తో అంతిమంగా సాధారణ ప్రోగ్రామ్ హలో కేవలం అని. తద్వారా ఆ మేజిక్ అన్ని వార్తలు ఇప్పటివరకు జరుగుతున్న చేశారు. మరియు ఈ తీసుకోవాలని కొనసాగుతుంది పద్ధతులు మంజూరు, కాని వసూలు జూసీ వివరాలు చాలా ఉంది అక్కడ క్రింద జరగబోతోంది. మరియు ఈ విధంగా చేస్తుంది మీ ఇంటెల్ ఇన్సైడ్ తో కంప్యూటర్ ముఖ్యంగా ప్రత్యేక. సో గమనించండి న, మీరు అని కు ఈ శుక్రవారం అర్హత కోసం మాకు చేరడానికి, గో సాధారణ స్థానంలో cs50.net/rsvp కు, 1:15 PM ఈ శుక్రవారం. మరియు ఇప్పుడు కొన్ని ప్రకటనలు. కనుక మనం కొన్ని మంచి వార్త ఉంది. మరియు మేము కొన్ని చెడ్డ వార్తలు కలిగి. ఇక్కడ కొన్ని మంచి వార్తలు ప్రారంభించండి. [GROANING] అన్ని కుడి. బాగా, అది సాంకేతికంగా ఒక సెలవు వార్తలు ఇది చాలా మాకు నుండి ఒక బహుమతి కాదు. కోర్సు యొక్క కానీ అప్పుడు చెడు వార్తలను. [GROANING] నేను సమయం చాలా ఖర్చు ఈ యానిమేషన్స్. [నవ్వు] ఒక సమీక్ష సెషన్ ఉంటుంది ఈ సోమవారం వచ్చిన. ఇది 5:30 PM ఉండటానికి జరగబోతోంది. మేము అన్ని ఈ వివరాలను మీరు గుర్తు చేస్తుంది కోర్సు యొక్క మీరు ఇమెయిల్ ద్వారా రోజుల సమయం కేవలం ఒక జంట లో వెబ్సైట్. ఇది చిత్రీకరించబడింది మరియు అందుబాటులో ఉంటుంది కొంతకాలం తర్వాత. మీరు చేయలేరు కనుక ఆ సోమవారం రాత్రి స్లాట్, ఆందోళన పడకండి. విభాగాలు ఈ వచ్చే వారం కూడా క్విజ్ కోసం సమీక్ష దృష్టి. మీ విభాగం సోమవారం, న ఉంటే నిజానికి విశ్వవిద్యాలయంలో సెలవు, మేము ఇప్పటికీ విభాగంలో కలిసే. మీరు మామూలుగా చేయలేరు ఉంటే విభాగం మీరు వెళుతున్న ఎందుకంటే దూరంగా ఆ మంచిది. ఆదివారం లేదా మంగళవారం విభాగం లేదా హాజరు జాసన్ యొక్క భాగం ట్యూన్ ఇన్ ఇది అందుబాటులో ఆన్లైన్. సో, మరింత చెడ్డ వార్తలు. సో సిలబస్ ప్రకారం, మేము తదుపరి శుక్రవారం ఉపన్యాసం కలిగి. కానీ శుభవార్త - స్పష్టంగా, నేను ఈ చాలా ఎక్కువ సమయం గడిపేవాడు. [నవ్వు] మేము శుక్రవారం ఉపన్యాసాలు తదుపరి రద్దు చేస్తాము. సో మాకు ఒక బహుమతి ఉంటుంది, కాబట్టి మీరు నిజంగా ఒక nice విరామం లో కలిగి ఉండవచ్చు ఈ వారం అందువలన రెండు వారాల మధ్య. ఏ ఉపన్యాసాలు తదుపరి వారం, కేవలం ఒక చిన్న కనుక మీరు ఉండాలి ఇది కొద్దిగా క్విజ్, పెరుగుతున్న సంతోషిస్తున్నాము విధానం. సో యొక్క ఇప్పుడు మన దృష్టి చెయ్యి వీలు వాస్తవానికి దృశ్య అని ఏదో మరియు మరింత ఉత్తేజకరమైన మరియు వేదికను ఏర్పాటు క్షితిజ సమాంతర ఉండాలి జరగబోతోంది ఏమి కోసం వారాల సమయం కేవలం ఒక జంట లో. మొదటి క్విజ్ తరువాత, మేము తెరుద్దాము మా సమస్య సెట్లు మరొక దృష్టి డొమైన్ నిర్దిష్ట సమస్య, ఆ సాధారణంగా ఫోరెన్సిక్స్ లేదా భద్రతా. ఈ సమస్యను నిజానికి, సంప్రదాయం సెట్ నాకు ఒకటి అంతటా నడవడానికి తోటి లేదా CA ల బోధన కొన్ని ఛాయాచిత్రాలను తీసుకొని క్యాంపస్ గుర్తించదగిన కానీ కాని స్పష్టమైన ప్రజలు, అప్పుడు స్థలాలు, లేదా విషయాలు, ప్రతి సంవత్సరం నేను ఏదో అనుకోకుండా తొలగించడానికి నిర్వహించండి లేదా డిజిటల్ మీడియా కార్డ్ చెడగొట్టి మా కెమెరా లోపల. కానీ పెద్ద ఒప్పందం. నేను ముందుకు వెళ్లి ప్రదర్శించాడు చేయవచ్చు నా కంప్యూటర్ లోకి ఆ. నేను, అది ఒక ఫోరెన్సిక్ చిత్రం చేయవచ్చు సున్నాలు కాపీ ద్వారా, మాట్లాడటం మరియు ఆ మెమరీ కార్డ్ వాటిని ఆఫ్, అని దాని ఒక SD కార్డ్ లేదా కాంపాక్ట్ ఫ్లాష్ కార్డ్ లేదా మీకు తెలిసిన ఏ. ఆపై మేము ఆ అప్పగించండి చేయవచ్చు. అందువలన ఇతర మధ్య ముందుకు సవాలు, మీరు కోసం విషయాలు, వ్రాయడానికి ఉంటుంది ఒక మొత్తం బంచ్ తిరిగి ఆ C కోడ్ నాకు JPEGs మరియు బహిర్గతం ఉంటుంది ఆ వ్యక్తులు, ప్రదేశాలు, లేదా విషయాలు. మరియు మేము కూడా ఈ సమస్య, మాట్లాడదాము సెట్ మరియు రోజులలో గురించి, రాబోయే సాధారణంగా గ్రాఫిక్స్. మేము, ఒక కోర్సు వాటిని ఉపయోగించి బయటకు కోసం. మంజూరు కోసం కానీ మీరు విధమైన తీసుకున్నారు ఈ అధిక స్థాయి భావాలను ఉంది దీర్ఘ చతురస్రాలు మరియు ovals యొక్క. కానీ హుడ్ కింద పిక్సెళ్ళు ఉన్నాయి. మరియు మీరు ప్రారంభించడానికి కలిగి ఆ గురించి ఆలోచిస్తూ. లేదా మీరు p-సెట్ 4 అనుకుంటున్నాను ఉంటుంది కోసం మీ ఇటుకలు మధ్య అంతరం గురించి, ఎలా త్వరగా మీరు బంతి అంతటా కదిలే చేస్తున్నారు స్క్రీన్ బయటకు. కాబట్టి ఈ భావనను ఉంది ఆ మీ స్క్రీన్ చుక్కలు ఇప్పటికే తెరపైకి వస్తాయి. ఇప్పుడు మీరు చూడండి ఏమి, అయితే, ఏ మీరు ఒక కంప్యూటర్ తెరపై పొందుటకు. మీరు ఎప్పుడైనా కొన్ని మంచి లేదా చూసిన ఉంటే చెడు TV, అసమానత వారు అందంగా ఉంటాయి technophobes వంటి ప్రేక్షకుల చికిత్స ఎవరు కాదు నిజంగా చేయండి చాలా కంప్యూటింగ్ గురించి తెలుసు. అందువలన పోలీసులు చాలా సులభం చెప్పటానికి డిటెక్టివ్, మీరు చేయవచ్చు నాకు ఆ శుభ్రం? లేదా కుడి, విస్తరించేందుకు? విస్తరించేందుకు లో buzz పదం వంటిది అత్యంత ఏదైనా నేర సంబంధిత షో. మీరు చాలా తీసుకుంటే మరియు రియాలిటీ ఉంది చేయడం ఒక అనుమానితుడు యొక్క అస్పష్టంగా చిత్రం చెడు ఏదో, మీరు కాదు కేవలం దీన్ని మెరుగుపరచడానికి. మీరు అనంతమైన జూమ్ కాదు. మీరు ఎవరైనా యొక్క ప్రకాశం లో చూడండి కాదు ఆ పాల్పడిన కంటి ఉన్నప్పటికీ ముఖ్యంగా నేరం TV లో ఈ ప్రాబల్యం. అందువలన యొక్క చైతన్యపరచటంలో వీలు ఆ రాబోయే సమస్య ఒక సంగ్రహావలోకనం తో సెట్ కొన్ని ప్రదర్శనలలో ఇది మీకు తెలిసిన కావచ్చు. [వీడియో ప్లేబ్యాక్] -OK. ఇప్పుడు, మీరు ఒక మంచి కనిపిస్తోంది చేసుకుందాం. అది పట్టుకోండి. తిరిగి అమలు. ఒక నిమిషం వేచి ఉండండి. కుడివైపు వెళ్ళు. -ఉన్నాయి. ఆ స్తంభింప. స్క్రీన్ పూర్తి. -OK. ఆ స్తంభింప. య, ఆ ఉంటుంది అప్-బిగించి? ఆ వ్యక్తి లో-వెక్టర్ తిరిగి చక్రం ద్వారా. ఈ అక్కడికక్కడే ఇక్కడే లో జూమ్. -సరైన పరికరాలు, imaged విస్తరించి పదును చేయవచ్చు. దాన్ని ఆ? అది ఒక వృద్ది కార్యక్రమం. -మీకు ఏ అప్ స్పష్టం? -నాకు తెలీదు. యొక్క దీన్ని మెరుగుపరచడానికి లెట్. విభాగం A-6-మెరుగుపరచండి. -I వివరాలు విస్తరించింది మరియు - -I విస్తరించేందుకు తగినంత ఉందని నేను అనుకుంటున్నాను. నా తెర విడుదల. ఆమె కంటి లో ప్రతిబింబం-మెరుగుపరచండి. యొక్క ఈ ద్వారా రన్ లెట్ వీడియో మెరుగుదల. -ఎడ్గార్, మీరు ఈ మెరుగుపరుస్తాయి? ఆన్ చేరండి. -I've ఈ తెలివితో పని. -ఎవరో ప్రతిబింబం. -ప్రతిబింబం. ప్రతిబింబం-ఉంది మనిషి యొక్క. -ప్రతిబింబం. -ఉన్నాయి ప్రతిబింబం యొక్క. అద్దం లో-జూమ్. -మీరు ప్రతిబింబం చూడగలరు. -మీకు ఇక్కడ నుండి చిత్రం విస్తరించేందుకు? -మీకు ఇక్కడే అతనికి విస్తరించేందుకు? -మీకు దీన్ని మెరుగుపరచడానికి? -మీకు దీన్ని మెరుగుపరచడానికి? ఉండటం మేము ఈ విస్తరించేందుకు? -మీకు దీన్ని మెరుగుపరచడానికి? రెండవ ఆన్ హోల్డ్, నేను విస్తరించేందుకు చేస్తాము. తలుపు మీద లో జూమ్. -X10. -జూమ్. [నవ్వు] సైన్-తరలించు ఆపడానికి,-వేచి. -ఆపు. అది విరామం. చుట్టూ ఒక 75 డిగ్రీల-తిప్పండి నిలువు దయచేసి. [నవ్వు] భాగం తిరిగి-ఆపు, మరియు తలుపు గురించి మళ్ళీ. ఒక చిత్రం పెంచే-గాట్ ఆ బిట్మ్యాప్ చెయ్యవచ్చు? -బహుశా మేము ప్రదీప్ సేన్ ఉపయోగించవచ్చు పద్ధతి విండోస్ లోకి చూడటానికి. -ఈ సాఫ్ట్వేర్ కళ యొక్క రాష్ట్రం. -చిహ్నం విలువ ఆఫ్. -సరైన కలయిక అల్గోరిథంలు యొక్క. -ఆయన ప్రకాశం అల్గోరిథంలు తీసుకువెళ్లారు తదుపరి స్థాయి మరియు నేను వాటిని ఉపయోగించవచ్చు ఈ ఛాయాచిత్రం విస్తరించేందుకు. ఆన్ లాక్ మరియు z-అక్షం వచ్చేలా. -మెరుగుపరచండి. -మెరుగుపరచండి. -మెరుగుపరచండి. -స్తంభింపచెయ్యి మరియు మెరుగుపరచండి. [END వీడియో ప్లేబ్యాక్] డేవిడ్ J. మలన్: సో సమస్య సెట్ 5 అక్కడ ముందుకు ఉంది ఏమిటి. కనుక మనం వెంటనే ఒక మంచి అవగాహన పొందుతారు ఎప్పుడు ఎందుకు మీరు డబ్బా మరియు మా విధంగా మెరుగుపరచలేరు. కానీ మొదటి, యొక్క మా దృష్టిని తిరిగి వీలు మేము చేస్తాము బిల్డింగ్ బ్లాక్స్ కొన్ని ఆ కథ చెప్పడానికి ఉండాలి. కాబట్టి మేము ఈ చిత్రం ఆకర్షించాడు గుర్తు సోమవారం మరియు కొద్దిగా గత వారం. మరియు ఈ విషయాలు లేఅవుట్ వివరిస్తుంది మీ కంప్యూటర్ యొక్క మెమరీ లో ఉన్నప్పుడు కొన్ని ప్రోగ్రామ్ను అమలు. టాప్ టెక్ విభాగంలో, రీకాల్, సూచిస్తుంది అసలు సున్నాలు మరియు వాటిని మీ ప్రోగ్రామ్ ఉన్నారు. అక్కడ, ఆ క్రింద, కొన్ని initialized లేదా అవినియోగిత డేటా, ఇది సాధారణంగా లేదా స్థిరాంకాలు వంటి విషయాలను సూచిస్తుంది తీగలను లేదా ప్రపంచ వేరియబుల్స్ ముందుగానే ప్రకటించారు. అక్కడ కుప్ప, కానీ మేము వచ్చి చేస్తాము తిరిగి ఒక బిట్ లో ఆ. ఆపై స్టాక్ ఉంది. చాలా లో trays యొక్క స్టాక్ వంటి మెమరీ గెట్స్ పేరు ఫలహారశాల ఈ ఉంది పొరలుగా మరియు చేసినప్పుడు పొరలుగా మీరు ఒక కార్యక్రమంలో ఏమి? కోసం స్టాక్ ఉపయోగం ఏమిటి? అవును? ఫంక్షన్ యొక్క కాల్. మీరు ఒక ఫంక్షన్ కాల్ ఎప్పుడైనా, అది దాని కోసం మెమరీ అంశం గురించి ఆలోచించారు ఇచ్చిన స్థానిక వేరియబుల్స్ లేదా దాని పారామితులు. మరియు చిత్రాల, మేము చూడండి ప్రతి తో ఒక వరుస ఫంక్షన్, అని కాల్స్ B కాల్స్ సి కాల్స్ D, వారు స్టాక్ లో పొరలుగా చేసుకోగా. మరియు ఆ ముక్కలు ప్రతి లోపల మెమరీ తప్పనిసరిగా ఒక ఏకైక పరిధిని ఉంది ఆ ఫంక్షన్ కోసం, ఇది, కోర్సు యొక్క, మీరు అప్పగించండి అనుకుంటే సమస్యాత్మకం ఫంక్షన్ నుంచి మరొక ఒక పావు మీరు కావలసిన డేటా యొక్క పరివర్తనం చెందడానికి లేదా మార్చడానికి. సో ఎనేబుల్ మా పరిష్కారం ఏమిటి ఒక స్టాక్ ప్రాతినిధ్యం ఒక ఫంక్షన్ లోపల మెమరీ మార్చడానికి ప్రణాళిక మరొక స్టాక్ ఫ్రేమ్ యొక్క? ఎలా మరొక ఆ రెండు చర్చ లేదు? సో గమనికలు లేదా చిరునామాలను ద్వారా, పేరు లో ఇది, మళ్ళీ, కేవలం వివరించడానికి ఒక నిర్దిష్ట యొక్క మెమరీ, ద్వారా మార్గం కాటు సంఖ్య, ముఖ్యంగా విలువ చూడవచ్చు. కాబట్టి మేము కొనసాగింది చివరిసారి గుర్తుకు ఒక వద్ద కథ మరియు చూసారు బొత్తిగా బగ్గీ కార్యక్రమం. మరియు ఈ ప్రోగ్రామ్ కొన్ని కోసం బగ్గీ ఉంది కారణాలు, కానీ వలన చింతించవలసిన ముఖ్య ఒకటి అది ఏమి తనిఖీ విఫలమైతే ఎందుకంటే? అవును, అది తనిఖీ విఫలమైంది. క్షమించాలి? 12 అక్షరాలు కంటే ఎక్కువ ఉంటే. సో చాలా తెలివిగా నడిపిన, memcopy కాల్ చేస్తున్నప్పుడు, ఇది, పేరు సూచించినట్లు, కేవలం దాని రెండవ వాదనను కాపీలు మెమరీ దాని మొదటి వాదన లోకి. మూడవ వాదన, చాలా తెలివిగా నడిపిన, ఉంది మీరు లేదు నిర్ధారించుకోండి తనిఖీ ఈ సందర్భంలో, పొడవు కంటే ఎక్కువ కాపీ బార్, పాత్రల సంఖ్య, గమ్యం లోకి, ఈ ఉంది అర్రే C. కానీ సమస్య ఏమి సి కూడా తగినంత పెద్ద కాదు ఉంటే ఆ నిర్వహించడానికి? మీరు సంఖ్య కాపీ చేయబోతున్నామని మీరు ఇచ్చిన చేసిన బైట్లు. కానీ మీరు వాస్తవానికి ఏమి ఉన్నాయి మీరు కోసం గది కంటే బైట్లు? బాగా, ఈ కార్యక్రమం చాలా తెలివిలేక కేవలం నిర్లక్ష్యంగా ఇది సంసార తీసుకోవాలని కొనసాగింది ఇచ్చిన, హలో బాక్ స్లాష్ 0 స్ట్రింగ్ తక్కువ గొప్ప ఉంటే తగినంత, ఐదు అక్షరాలు ఇష్టపడుతున్నారు. అయితే 12 అక్షరాలు లేదా ఉంటే 1,200 అక్షరాలు, మేము చివరిసారి చూసింది మీరు కేవలం పూర్తిగా చూడాలని ఉద్దేశ్యంతో మెమరీ తిరిగి రాస్తుంది ఆ మీకు సంబంధించినది కాదు. మరియు చెత్త సందర్భంలో, మీరు తిరిగి రాస్తుంది ఉంటే మేము అని అక్కడ ఎరుపు భాగం చిరునామా తిరిగి - ఈ కేవలం కంప్యూటర్ స్వయంచాలకంగా మీరు కోసం, వెనుక దూరంగా దృశ్యాలు, tucks ఒక 32-bit విలువ అది ఏమి చిరునామా దానిని గుర్తు తిరిగి ఉన్నప్పుడు foo, ఈ ఇతర ఫంక్షన్, అమలు చేయబడుతుంది. ఇది రకాల ఒక రొట్టె చిన్న ముక్క వార్తలు అది తిరిగి. మీరు, సమర్థవంతంగా, ఆ తిరిగి రాస్తుంది ఉంటే మీరు చెడు వ్యక్తి అయితే, చెయ్యవచ్చు అనుకొనుట శక్తివంతమైన స్వాధీనం ఒకరి కంప్యూటర్. మరియు మీరు చాలా ఖచ్చితంగా చేస్తాము చాలా సందర్భాలలో అది క్రాష్. ఇప్పుడు ఈ సమస్య మాత్రమే అధికమైనది మేము మెమరీ గురించి మాట్లాడటం ప్రారంభించారు సాధారణంగా నిర్వహణ. మరియు malloc, మెమరీ కేటాయింపు కోసం, ఒక మేము కేటాయించుటకు ఉపయోగించే ఫంక్షన్ మేము ముందుగానే తెలియదు మెమరీలోకి మేము కొన్ని అవసరం ఉండవచ్చు. సో, ఉదాహరణకు, నేను తిరిగి వెళ్ళి ఉంటే ఇక్కడ పరికరానికి. మరియు నేను, గత సమయం hello2.c నుండి తెరుచుకుంటుంది చూసారు ఇది ఇక్కడ ఈ కార్యక్రమం, గుర్తు ఈ వంటి ఒక చిన్న ఏదో, కేవలం మూడు పంక్తులు - మీ పేరు, అప్పుడు స్ట్రింగ్ పేరు, రాష్ట్రం ఎడమవైపు, getstring సమానం. మరియు అప్పుడు మేము దాన్ని ప్రింట్ యూజర్ యొక్క పేరు. సో ఈ ఒక సూపర్ సాధారణ కార్యక్రమం. స్పష్టమైన ఉండాలి, నాకు ముందుకు వెళ్ళి తెలపండి హలో-2 తయారు. నేను డాట్ స్లాష్ హలో-2 చేయ బోతున్నాను. మీ పేరు రాష్ట్రం - డేవిడ్. ఎంటర్ చెయ్యండి. డేవిడ్ హలో. అది సరే పని ఉంది. కానీ నిజంగా జరగబోతోంది ఇక్కడ హుడ్ కింద? మొదటి లెట్ యొక్క కొన్ని పొరల తిరిగి తొక్క. స్ట్రింగ్ మేము చేసిన ఒక పర్యాయపదం ఏమి కోసం గ్రహించారు? చార్ స్టార్. సో యొక్క ఇది కొద్దిగా ఎక్కువ మర్మమైన తయారు చేద్దాము కానీ సాంకేతికంగా సరైన ఇది అంటే ఒక చార్ స్టార్, ఉంది పేరు, అవును, ఒక వేరియబుల్ ఉంది. కానీ ఏది దుకాణాలు చిరునామా కొద్దిగా వింత అనిపిస్తుంది ఇది ఒక చార్ నేను ఒక స్ట్రింగ్ తిరిగి పొందుతున్నాను ఎందుకంటే. నేను తిరిగి బహుళ పొందుతున్నాను అక్షరాలు ఒక చార్ కాదు. కానీ కోర్సు యొక్క, మీరు మొదటి అవసరం గుర్తుంచుకోవాలని చార్ యొక్క చిరునామా పేరు ఎందుకంటే ఎందుకు మొత్తం స్ట్రింగ్? మీరు ఎలా దొరుకుతుందని ఎక్కడ ముగింపు స్ట్రింగ్ ప్రారంభంలో తెలుసుకోవడం? బాక్ స్లాష్ సున్నా. సో ఆ రెండు ఆధారాలు మీకు దొరుకుతుందని ప్రారంభంలో మరియు ముగింపులో ముందు ఏ స్ట్రింగ్ వారు ఉన్నారు కాబట్టి కాలం, ఉన్నాయి సరిగ్గా ఆ శూన్య ఏర్పాటుచేయబడింది టెర్మినేటర్, ఆ బాక్ స్లాష్ సున్నా. కానీ ఈ getstring కాల్. ఆ getstring హాజరవుతారు అన్ని ఈ సమయంలో రకమైన ఉంది మాకు మోసం. ఇది తప్పకుండా, ఈ కార్మిక చేస్తోంది యూజర్ నుండి ఒక స్ట్రింగ్ పొందడానికి. కానీ ఆ స్మృతి పేరు వార్తలు నుండి వస్తున్నాడు? మేము ఇక్కడ చిత్రాన్ని తిరిగి వెళ్ళి ఉంటే కేవలం ఒక నుండి నిర్వచనం దరఖాస్తు క్షణం క్రితం, ఆ స్టాక్ పేరు ఉంది ధర్మాలని పిలుస్తారు మెమరీలోకి చేరుతుంది తర్కానికి ద్వారా, మీరు getstring కాల్ చేసినప్పుడు, ఆపై నేను టైప్ D-A-V-I-D, ఎంటర్ పేరు ఉంది D-A-V-I-D బాక్ స్లాష్ సున్నా ఆధారంగా, నిల్వ కథ మేము చాలా మాకు చెప్పారు చేసిన? అది అగుపిస్తుంది స్టాక్, కుడి? మీరు స్ట్రింగ్ పొందండి కాల్ చేసినప్పుడు మీరు ఒక పొందుటకు స్టాక్ మెమరీ తక్కువ స్లైస్. సో ఆ D-A-V-I-D కారణం ఉంది బాక్ స్లాష్ సున్నా నిల్వ ఉంది అక్కడ స్టాక్ లో. కానీ తిరిగి getstring, ఒక నిమిషం వేచి ఉండండి ఆ స్ట్రింగ్, మాట్లాడటానికి, అంటే ఇది ఫలహారశాల నుండి ట్రే వార్తలు స్టాక్ ఆఫ్ తీసుకోవాలి. మరియు మేము ఆ వెంటనే ఒక చివరిసారి అన్నారు ఫంక్షన్ తిరిగి, మరియు మీరు తీసుకోవాలని స్టాక్ ఆఫ్ ట్రే, మాట్లాడటానికి, ఏ మీరు అవశేషాలు గురించి ఊహించుకుని మెమరీ? నేను విధమైన ప్రశ్నార్థకాలుగా వాటిని redrew వారు సమర్థవంతంగా మారింది ఎందుకంటే తెలియని విలువలు. కొన్ని వారు తిరిగి ఉపయోగించ తగినవి తదుపరి చర్య అంటారు. ఇతర మాటల్లో చెప్పాలంటే, జరిగితే నిల్వ చేయడానికి - నేను త్వరగా చిత్రాన్ని డ్రా చేస్తాము ఇక్కడ స్టాక్. మేము దిగువన గీయడం సాధ్యం జరిగే ఉంటే నా మెమరీ సెగ్మెంట్, మరియు మేము చెప్పటానికి చేస్తాము ఈ మెమరీ ప్రాంతంగా ప్రధాన మరియు ఉండవచ్చు ARG సి మరియు ఆక్రమించిన ARG v కార్యక్రమంలో ఏదైనా, getstring అంటారు, బహుశా getstring గెట్స్ ఇక్కడ మెమరీ భాగం. ఆపై D-A-V-I-D ఏదో ఈ ఫంక్షన్ లో ముగుస్తుంది. మరియు నేను సరళంగా వెళుతున్న. కానీ యొక్క చేపట్టడానికి వీలు దాని D-A-V-I-D అని బాక్ స్లాష్ సున్నా. సో ఈ అనేక బైట్లు ఉపయోగిస్తారు getstring కోసం ఫ్రేమ్. కానీ వెంటనే getstring తిరిగి వంటి, మేము చివరిసారి మాట్లాడుతూ ఈ మెమరీ ఇక్కడ అన్ని అవుతుంది - woops! - అన్ని సమర్థవంతంగా మాసిపోయిన అవుతుంది. మరియు మేము ప్రశ్న ఇప్పుడు ఈ ఆలోచించవచ్చు మార్కులు తెలిసిన ఎందుకంటే దాన్ని మెమరీ మారింది జరగబోతోంది. నిజానికి, నేను చాలా తరచుగా విధులు కాల్ getstring కంటే ఇతర. మరియు వెంటనే నేను కొన్ని ఇతర పిలుస్తున్నారు getstring కంటే ఫంక్షన్, బహుశా లేదు మేము కేవలం చూసారు ఈ ప్రత్యేక కార్యక్రమం కానీ కొన్ని ఇతర, తప్పనిసరిగా కొన్ని ఇతర వద్ద ఫంక్షన్ ఇచ్చిన ముగింపు ఉండవచ్చు స్టాక్ లో ఈ తదుపరి స్పాట్. సో ఆ getstring దుకాణాలు ఉండకూడదు స్టాక్ న D-A-V-I-D నేను ఎందుకంటే వెంటనే ప్రాప్తిని కోల్పోతే. కానీ అవి getstring తెలుసు మాత్రమే ఏమి తిరిగి? ఇది తిరిగి లేదు నాకు ఆరు అక్షరాలు. ఇది నిజంగా ఏమి లేదు తిరిగి మేము చివరిసారి నిర్ధారించారు? మొదటి చిరునామా. సో ఏదో, మీరు getstring పిలిచాడు, అది మెమొరీ ఒక భాగం కేటాయించడం లో స్ట్రింగ్ వినియోగదారులు రకం మరియు ఇది అప్పటి తిరిగి చిరునామా. మరియు మీరు ఎప్పుడు కావలసిన హాజరవుతారు ఈ లో మెమరీని కేటాయించాల్సిన పని మార్గం అని పిలుస్తారు వ్యక్తి తిరిగి ఆ ఫంక్షన్ యొక్క చిరునామా మెమరీ యొక్క భాగం, మీరు ఖచ్చితంగా వద్ద స్టాక్ లో అది చాలు కాదు దిగువన, ఎందుకంటే క్రియాశీలంగా కేవలం వార్తలు చాలా మీదే మారింది వెళుతున్న త్వరగా, కాబట్టి మీరు బహుశా అంచనా పేరు మేము బహుశా దీన్ని టాసు చేయబోతున్నామని బదులుగా, అని పిలవబడే కుప్ప. సో మీ మెమరీ యొక్క దిగువన మధ్య లేఅవుట్ మరియు మీ మెమరీ యొక్క టాప్ లేఅవుట్ సెగ్మెంట్ల మొత్తం బంచ్ ఉంటాయి. ఒక కుప్ప ఉంది, మరియు కుడి ఇది పైన కుప్ప ఉంది. మరియు కుప్ప కేవలం ఒక విభిన్న భాగం ఉంది విధులు కోసం ఉపయోగిస్తారు లేదు మెమరీ వారు అని చేసినప్పుడు. ఇది ఉన్నప్పుడు, దీర్ఘకాల మెమరీ కోసం ఉపయోగిస్తారు మీరు ఒక పని కొన్ని పట్టుకోడానికి అనుకుంటున్నారా మెమరీ మరియు అది న హేంగ్ చెయ్యగలరు ఇది నియంత్రణ కోల్పోకుండా. ఇప్పుడు మీరు బహుశా వెంటనే అనుకొనుట ఈ కాదని చూడండి ఒక పరిపూర్ణ డిజైన్ అవసరం. మీ ప్రోగ్రామ్ మెమరీ కేటాయించిన వంటి స్టాక్, లేదా మీరు కాల్ మరింత మరియు మరింత విధులు, లేదా మీరు కేటాయించుటకు వంటి గా malloc తో కుప్ప మెమరీ getstring చేయడం, ఏమి స్పష్టంగా ఉంది అనివార్యమైన సమస్య ఉంది? రైట్. నిజానికి ఇలా ఈ బాణాలు ప్రతి ఇతర వద్ద గురిపెట్టి ఉంటాయి బాగా భవిష్యత్తును చెప్పు లేదు. నిజానికి, మేము చాలా త్వరగా క్రాష్ కాలేదు మార్గాల్లో సంఖ్య కార్యక్రమం. నిజానికి, నేను మేము కలిగి ఆలోచిస్తున్న ఈ అనుకోకుండా ఒకసారి. లేదా లేకపోతే, అది యొక్క తెలపండి ఉద్దేశపూర్వకంగా ఇప్పుడు. నాకు ముందుకు వెళ్లి త్వరగా సూపర్ వ్రాయడానికి వీలు ఒక ప్రోగ్రామ్ dontdothis.c అని. మరియు ఇప్పుడు నేను ఇక్కడ వెళ్ళి వస్తుంది పదునైన stdio.h ఉంటాయి. ఫంక్షన్ foo పడుతుంది డిక్లేర్ లెట్ యొక్క ఏ వాదనలు, ఇది శూన్యమైన ద్వారా బాగా సూచిస్తారు. మరియు foo చేయబోవడం మాత్రమే విషయం బహుశా ఇది కాల్ foo, తెలివైన ఆలోచన, కానీ అది. ENT ప్రధాన శూన్యమైన. ఇప్పుడు ప్రధాన వెళుతున్న మాత్రమే విషయం చేయాలని అలాగే foo పిలుస్తారు. మరియు కేవలం కిక్స్ కోసం, నేను వెళ్ళి వెళుతున్న ముందుకు ఇక్కడ మరియు హలో "printf చెప్పటానికి foo. " OK. నేను ఏ తప్పులు లేదు కనుక, Dontdothis డాట్ స్లాష్ చేయండి. మరియు లెట్స్ ఒక పెద్ద విండోలో దీన్ని - డాట్ స్లాష్, dontdothis. న కమ్. అయ్యో. స్పష్టంగా, మీరు చేయవచ్చు. ఇది డామన్. OK. వేచి. ఉండండి. మేము - మేము అది ఉపయోగించారు. [విచార నిట్టూర్పుని] నాకు తెలుసు కానీ నేను మనం అనుకున్నదానికన్నా కేవలం తొలగించినట్లు. ఉహ్, yeah. ఇది డామన్. ఈ రాబ్ పరిష్కరించడానికి. ఏమి? ఇది చాలా సులభం. అవును, మేము ఆప్టిమైజేషన్ ఆపివేయబడింది. OK, బై నిలబడటానికి. ఇప్పుడు నేను మంచి అనుభూతి. OK. అన్ని కుడి. సో యొక్క ఈ మళ్ళీ కంపైల్ చెయ్యండి వీలు - మీరు dontdothis చేయండి. మీరు ఈ పేరు ఉంటుంది కేవలం ఒక క్షణం లో dothis.c. అక్కడ మేము వెళ్ళి. ధన్యవాదాలు. OK. నేను ప్రింటింగ్ వాస్తవాన్ని ఏదో బయటకు కేవలం నిజానికి ఉంది ప్రక్రియ నెమ్మదిగా ఇది మనం ఆ స్థానానికి చేరుకునేందుకు ఉండేది. OK. అయ్యో! సో వాట్ నిజంగా జరుగుతుందో? కేవలం జనాంతికంగా అక్కడ కారణం,, ఉంది ఇన్పుట్ పరంగా ఏదైనా చేయడం మరియు అవుట్పుట్ నెమ్మదిగా ఉంటుంది ఎందుకంటే మీరు పాత్రల వ్రాయడానికి కలిగి తెర, ఇది స్క్రోల్ ఉంది. చాలా కాలం కథ చిన్న, నేను నిజానికి కలిగి కాబట్టి సహనం జరిగింది, మేము కలిగి ఉంటుంది అలాగే ఈ ముగింపు ఫలితంగా చూసిన. నేను ముద్రణ-ups రైడ్ వచ్చింది, ఇప్పుడు ఆ మేము వెంటనే చూడండి. సో ఎందుకు ఈ ఫోజు. బాగా, కోర్సు యొక్క సులభమైన వివరణ, ఆ foo బహుశా ఉండాలి కూడా పిలుచుచున్నారు. ఇప్పుడు సాధారణ పరంగా, ఈ సూత్రం ఉంది. మరియు మేము ఒక జంట వారాల ఆలోచన క్రితం పునరావృత మంచి. సూత్రం ఈ మాయా మార్గం క్లుప్తమైన సూపర్ మిమ్మల్ని వ్యక్తం. మరియు అది పనిచేస్తుంది. కానీ అన్ని ఒక కీలకమైన అంశం ఉంది మేము మాట్లాడారు చేసిన పునరావృత కార్యక్రమాలు గురించి మరియు చూశారు ఇప్పటివరకు, ఇది వారు ఏమి లేదని ఉంది? కొన్ని హార్డ్ కోడెడ్ ఇది ఒక బేస్ సందర్భంలో, కొన్ని సందర్భాలలో చెప్పారు కేసు స్పష్టంగా ఇది foo, కాల్ లేదు ఇక్కడ సందర్భం. సో వాట్ నిజంగా ఏమి జరుగుతుందో ఈ చిత్రం పరంగా? బాగా, మిగిలిన ముఖ్య foo, దీనిని మెమరీ స్లైస్ గెట్స్. Foo foo కాల్స్, అది గెట్స్ మెమరీ స్లైస్. Foo foo కాల్స్, అది ఒక స్లైస్ గెట్స్. ఇది ఒక స్లైస్ గెట్స్. ఇది ఒక స్లైస్ గెట్స్. Foo తిరిగి ఎప్పుడూ ఎందుకంటే. మేము వారిలో erasing ఎప్పుడూ మీరు స్టాక్ నుండి ఫ్రేమ్లను. కాబట్టి మేము, కుప్ప ద్వారా కాదు ఊదడం చేస్తున్నారు ఎవరు ఏమి వేరే తెలుసు, మరియు చెప్పలేదు మేము మా యొక్క సరిహద్దులు అధిగమించడం చేస్తున్నారు మెమరీ విభాగం అని పిలుస్తారు. విభజన తప్పుడు వెళ్ళి లోపం. సో అక్కడ, పరిష్కార స్పష్టంగా దీన్ని లేదు. కానీ పెద్ద చిక్కుముడి ఆ, అవును, ఉంది ఖచ్చితంగా కొన్ని పరిమితి ఉంది ఇది బాగా ఎలా, నిర్వచించబడలేదు అయినా మీరు ఒక లో కాల్ చేయవచ్చు అనేక విధులు కార్యక్రమం, ఎన్ని సార్లు ఒక ఫంక్షన్ కూడా చేపట్టవచ్చు. మేము సూత్రం బోధించడానికి అదే అయినప్పటికీ ఈ శక్తివంతమైన మాయా విషయం ఒక సిగ్మా కోసం క్రితం వారాల జంట ఫంక్షన్, మరియు మేము డేటా పొందుటకు నిర్మాణాలు మరియు CS50, మీరు ఇతర చూస్తారు అది అప్లికేషన్లు, అది కాదు తప్పనిసరిగా గొప్పదనం. ఒక ఫంక్షన్ కూడా కాల్స్, ఉంటే ఎందుకంటే ఒక బేస్ ఉంది కూడా, కూడా కాల్స్ కేసు, మీరు బేస్ కేసు హిట్ లేకపోతే 1,000 కాల్స్ లేదా 10,000 కాల్స్ కోసం, ద్వారా మీరు గది రన్నవుట్ ఉండవచ్చని సమయం మీ అని పిలవబడే స్టాక్ మరియు విజయవంతమైన మెమరీ కొన్ని ఇతర భాగాలు. కనుక ఇది చాలా ఒక రూపకల్పన రాజీ ఉంది చక్కదనం మరియు మధ్య మీ నిర్దిష్ట పుష్టి అమలు. మరో ఇబ్బంది లేదా ఉంది మేము దాన్ని మరొక gotcha ఇప్పటివరకు చేస్తున్న. నేను getstring అని చేసినప్పుడు - నాకు హలో-2 తిరిగి వెళ్ళి తెలపండి. , నేను getstring కాల్ వెబ్ గమనించవచ్చు ఇది ఒక చిరునామా తిరిగి. మరియు మేము ఈ రోజు ప్రకటిస్తున్నారు చిరునామా కుప్ప నుండి. మరియు ఇప్పుడు నేను ముద్రించిన చేస్తున్నాను ఆ చిరునామా వద్ద స్ట్రింగ్. కానీ మేము అని ఎప్పుడూ getstring వ్యతిరేకం. మేము వంటి ఒక ఫంక్షన్ calll కు లేడు ఇక్కడ మీరు చేతి తిరిగి ungetstring, మెమరీ. కానీ స్పష్టముగా మేము బహుశా ఉండాలి. ఎందుకంటే మేము కంప్యూటర్ అడుగుతూ ఉంచుకుంటే వంటి ఒకరి మెమరీ కోసం, ద్వారా మార్గం getstring కానీ తప్పనిసరిగా, అది తిరిగి ఇవ్వాలని ఎప్పుడూ ఆ చాలా దారి అనుగుణంగా ఉంటుంది మేము మెమరీ రన్నవుట్ అనగా సమస్యలు. వాస్తవానికి, మేము ఈ కోసం చూడవచ్చు దీని ఉపయోగం కొత్త సాధనం సమస్యలు టైప్ కొద్దిగా నిగూఢ ఉంది. కానీ నాకు ముందుకు వెళ్లి అప్ స్ప్లాష్ వీలు కేవలం ఒక క్షణం లో తెరపై. నేను ముందుకు వెళ్లి Valgrind అమలు వెళుతున్న దీని మొదటి కమాండ్ పారామీటర్ తో లైన్ వాదన పేరు ఆ కార్యక్రమం హలో-2 యొక్క. మరియు దురదృష్టవశాత్తు ఇది అవుట్పుట్ atrociously ఉంది ఏ మంచి కారణం కోసం క్లిష్టమైన. కనుక మనం ఆ గజిబిజి చూడండి. డేవిడ్ నా పేరు రాష్ట్రము. తద్వారా ప్రోగ్రామ్ నిజానికి నడుస్తున్న. మరియు ఇప్పుడు మేము ఈ అవుట్పుట్ పొందుటకు. సో Valgrind పోలి ఉంటుంది GDB కు ఆత్మ లో. ఇది దానంతట ఒక డీబగ్గర్ కాదు. కానీ అది ఒక మెమరీ తనిఖీ వార్తలు. ఇది మీ అమలు ఒక ప్రోగ్రామ్ యొక్క ప్రోగ్రామ్ మరియు మీరు ఒక కోరితే మీరు చెప్పండి మెమరీ కంప్యూటర్ మరియు ఎప్పుడూ అందచేసి తిరిగి, తద్వారా మీరు అర్థం మెమొరీ లీక్. మరియు మెమరీ లీకేజ్ చెడు ఉంటాయి. మరియు మీరు కంప్యూటర్ల వినియోగదారులు ఉంటుంది బహుశా ఈ మీరు ఒక కలిగి లేదో, భావించాడు Mac లేదా ఒక PC. మీరు ఎప్పుడైనా మీ కంప్యూటర్ ఉపయోగించారు మరియు అనేక లో జరిగితే కాదు అయితే రోజుల, లేదా మీరు కేవలం చాలా వచ్చింది చేసిన నడుస్తున్న కార్యక్రమాలు, మరియు తిట్టు విషయం ఒక గ్రౌండింగ్ halt కు తగ్గిస్తుంది, లేదా కనీసం ఎందుకంటే, ఉపయోగించడానికి సూపర్ బాధించే వార్తలు ప్రతిదీ కేవలం సూపర్ నెమ్మదిగా వచ్చింది. ఇప్పుడు ఆ కారణాలు ఏ సంఖ్య చేయవచ్చు. ఇది ఒక అనంతమైన లూప్, ఒక బగ్ కావచ్చు ఒకరి కోడ్, లేదా, మరింత సాధారణంగా, ఇది మీరు మరింత ఉపయోగిస్తున్నారని అర్థం మీ కంటే మెమరీ, లేదా ప్రయత్నిస్తున్న, కంప్యూటర్ వాస్తవానికి. మరియు ఉండవచ్చు కొన్ని కార్యక్రమంలో ఒక బగ్ ఉంది మెమరీ కోరుతూ ఉంచే. సంవత్సరాలు బ్రౌజర్లు కోసం సంచలనాత్మక ఉన్నాయి ఈ, మరింత మెమరీ కోరుతూ కానీ అది తిరిగి ఇవ్వడానికి ఎప్పుడూ. ఖచ్చితంగా, మీరు మాత్రమే ఒక పరిమిత కలిగి ఉంటే మెమరీ మొత్తం, మీరు అడగవు కోసం అనంతమైన అనేక సార్లు మెమరీ కొన్ని. అందువలన మీరు అయినప్పటికీ, ఇక్కడ చూడండి ఏమి మళ్ళీ Valgrind యొక్క అవుట్పుట్ ఉంది ఒకసారి అవలోకనం కు అనవసరంగా క్లిష్టమైన మొదటి, ఈ ఆసక్తికరమైన భాగం. కుప్ప - నిష్క్రమణ ఉపయోగిస్తున్నాయి. ఇక్కడ ఎంత మెమరీ చేయబడింది వద్ద కుప్ప లో ఉపయోగంలో నా కార్యక్రమం ముగిసింది - ఒక బ్లాక్ లో స్పష్టంగా ఆరు బైట్లు. నేను నా చేతులు వేవ్ వెళుతున్నాను ఏమి వద్ద ఒక బ్లాక్. మరింత, అది కేవలం ఒక భాగం ఉంది అనుకుంటున్నాను భాగం కోసం సాంకేతిక పదం. ఆరు బైట్లు కానీ - ఆరు బైట్లు ఏమిటి వాడుకలో ఉన్నాయి? సరిగ్గా. D-A-V-I-D బాక్ స్లాష్ సున్నా, ఐదు లేఖ పేరు ప్లస్ శూన్య చివరను. సో ఈ కార్యక్రమం గమనించి Valgrind నేను ద్వారా, స్పష్టంగా, ఆరు బైట్లు అడిగారు getstring మార్గం, కానీ ఎప్పుడూ వాటిని తిరిగి ఇచ్చింది. వాస్తవానికి, ఈ విధంగా ఉండవు నా కార్యక్రమం మూడు కాదు స్పష్టమైన ఉంటే లైన్లు, కానీ 300 లైన్లు వార్తలు. కాబట్టి మేము నిజానికి మరొక ఆదేశం ఇవ్వగలిగిన లైన్ వాదన Valgrind కు మరింత మందమైన తయారు. దాన్ని గుర్తుంచుకోవాలని కొద్దిగా బాధించే వార్తలు. కానీ నేను లేకపోతే - యొక్క చూద్దాము. లీక్ - ఇది ఊఱుట జరిగినది - కూడా నేను వద్దు remember అది చేతిని ఆఫ్ ఏమిటి. - లీక్-చెక్ పూర్తి సమానం. Yep, ధన్యవాదాలు. - లీక్-చెక్ పూర్తి సమానం. ఎంటర్ చెయ్యండి. అదే కార్యక్రమం నడుపుతుంది. మళ్ళీ డేవిడ్ లో టైప్ చెయ్యండి. ఇప్పుడు నేను ఒక చిన్న మరింత వివరాలు చూడండి. కానీ కుప్ప సారాంశం క్రింద, ఇది నాలుగు కి - అహ్, ఈ nice రకం. ఇప్పుడు Valgrind నిజానికి చూస్తున్నానని నా కోడ్ లో కష్టం కొద్దిగా. మరియు అది, స్పష్టంగా, ఆ విధంగా యొక్క లైన్ malloc - మేము దూరంగా. వద్ద లైన్ - మేము అది ఏమి లైన్ చూడండి లేదు. కానీ malloc మొదటి దోషిగా. Malloc ఒక బ్లాగ్ ఉంది. అన్ని కుడి? OK, ఏ. కుడి? నేను getstring అని. getstring స్పష్టంగా malloc కాల్స్. సో వాట్ కోడ్ లైన్ స్పష్టంగా ఉంది కలిగి తప్పు ఈ మెమరీ కేటాయించిన? లెట్ యొక్క ఎవరైతే అతడ్ని malloc రాశాడు భావించేందుకు చాలా కాలం ఇలాంటి చుట్టూ ఉంది వారి తప్పు. కనుక ఇది బహుశా గని యొక్క. cs50.c లో getstring - ఒక యొక్క తద్వారా కంప్యూటర్ లో వేరే ఫైల్ - లైన్ లో 286 అపరాధి ఉన్నట్టుగా. ఇప్పుడు cs50 చేయబడిందని భావించండి వీలు కాబట్టి సమయం decent మొత్తం, దాదాపు మేము చాలా అమోఘమైన ఉన్నాయి. కావున getstring బహుశా కాదు బగ్ ఉంది, కానీ ఆ హలో-2.c లైన్ 18. సో యొక్క పరిశీలించి వీలు లైనును 18 ఏమి ఉంది. ఓహ్. ఏదో ఈ లైన్ తప్పనిసరిగా కాదు బగ్గీ, కేవలంగా, కానీ అది కారణం ఆ మెమొరీ లీక్ వెనుక. సో సూపర్ కేవలం, ఏ అకారణంగా చేస్తాను ఇక్కడ పరిష్కారంగా? మేము మెమరీ కోరుతూ ఉంటే, ఎప్పుడూ ఉన్నాయి అది తిరిగి ఇవ్వడం, మరియు ఒక ఉన్నట్టుగా సమస్య ఎందుకంటే నా కంప్యూటర్ మెమరీ రన్నవుట్ ఉండవచ్చు, నెమ్మది కావచ్చు డౌన్, చెడు విషయాలు బాగా, జరిగే సాధారణ సహజమైన పరిష్కారం ఏమిటి? అది తిరిగి ఇవ్వాలని. ఎలా మీరు మెమరీ పెంచడం లేదు? బాగా, అదృష్టవశాత్తూ చాలా సులభం కేవలం ఉచిత పేరు చెప్పటానికి. మరియు మేము ముందు ఈ ఎప్పుడూ చేసిన. కానీ మీరు తప్పనిసరిగా యొక్క ఆలోచించవచ్చు malloc వ్యతిరేకం గా ఉచిత. ఉచిత వ్యతిరేకం మెమరీ పెడుతోంది. కాబట్టి ఇప్పుడు నాకు ఈ మళ్ళీ కంపైల్ చెయ్యండి వీలు. హలో-2 తయారు. నాకు మళ్లీ అమలు లెట్. హలో-2 డేవిడ్. కనుక ఇది పని ఉంది సరిగ్గా అదే విధంగా. కానీ నేను Valgrind వెళ్లి తిరిగి అమలు చేస్తే నా కొత్తగా అదే ఆదేశం సంకలనం కార్యక్రమం, టైపింగ్ ముందు నా పేరు లో - బాగుంది. కుప్ప సారాంశం - - నిష్క్రమణ ఉపయోగిస్తున్నాయి సున్నా బ్లాక్స్ లో సున్నా బైట్లు. మరియు ఈ సూపర్ nice, అన్ని ఉంది కుప్ప బ్లాక్స్ విడుదలయ్యారు. సంఖ్య దోషాలను సాధ్యమే. సో, కాదు సమస్య సెట్ 4, వస్తున్నప్పుడు కానీ సమస్య సెట్ 5, ఫోరెన్సిక్స్ తో మరియు ముందుకు, ఈ చాలా అవుతుంది మీ యొక్క ఖచ్చితత్వం యొక్క కొలత మీరు లేదో కార్యక్రమం, లేదా మెమరీ లీకేజ్ లేదు. కానీ అదృష్టవశాత్తూ, మీరు సరైన కారణం కాదు మాత్రమే వాటిని అకారణంగా, ఇది ద్వారా చిన్న ప్రోగ్రామ్ల కోసం సులభం, నిస్సందేహంగా, ఉంది కానీ పెద్ద కార్యక్రమాలు కష్టం, , ఆ పెద్ద కార్యక్రమాలు, Valgrind మీరు గుర్తించడానికి సహాయపడుతుంది ప్రత్యేక సమస్య. కానీ మరొక సమస్య ఉంది ఆ సంభవించబోయే. , ఇది, నాకు ఇక్కడ ఈ ఫైలు అప్ తెరవడానికి లెట్ మళ్ళీ, కొంత చిన్న ఉదాహరణ. కానీ లెట్ యొక్క ఏమి దృష్టి ఈ కార్యక్రమం చేస్తుంది. ఈ memory.c అంటారు. మేము ఈ తరువాత రోజు పోస్ట్ చేస్తాము నేటి సోర్స్ కోడ్ యొక్క జిప్. మరియు నేను అని ఒక ఫంక్షన్ కలిగి గమనించవచ్చు వాదనలు మరియు పడుతుంది f ఏమీ తిరిగి. లైన్ 20 లో, నేను స్పష్టంగా ప్రకటించారు వెబ్ ఒక Int మరియు x కాల్ కు పాయింటర్. నేను కేటాయించి వెబ్ రాబడి malloc యొక్క విలువ. మరియు కేవలం నేను ఎన్ని బైట్లు, స్పష్టమైన ఉండాలి నేను బహుశా malloc నుండి తిరిగి పొందడానికి ఈ పరిస్థితి లో? బహుశా 40. ఎక్కడ నుండి పొందుతారు? బాగా, మీరు ఒక Int తరచుగా అని గుర్తు ఉంటే 4 బైట్లు, కనీసం అది ఉంది ఉపకరణం, సార్లు 4 10 ఖచ్చితంగా 40. సో malloc యొక్క చిరునామా తిరిగి ఒక మెమరీ భాగం మరియు నిల్వ చేసే x చివరికి పరిష్కరించేందుకు. సో, స్పష్టమైన ఉండాలి ఏమి అప్పుడు ఏమి జరుగుతుందో? బాగా, నాకు తిరిగి మారవచ్చు వీలు ఇక్కడ మా చిత్రానికి. నాకు నా దిగువన డ్రా లేదు లెట్ కంప్యూటర్ యొక్క మెమరీ, నాకు ముందుకు వెళ్ళి వీలు మరియు మొత్తం దీర్ఘచతురస్ర ఆకర్షించే నా RAM యొక్క అన్ని సూచిస్తుంది. మేము చెప్పటానికి మేము స్టాక్ అడుగున ఉంది. మరియు ఒక టెక్స్ట్ విభాగంలో ఉంది అవినియోగిత డేటా. కానీ నేను వియుక్త ఆ వెళుతున్న దూరంగా డాట్, డాట్, డాట్ వంటి ఇతర విషయాలు. నేను ఈ చూడండి వెళుతున్న ఎగువన కుప్ప వంటి. ఆపై ఈ చిత్రాన్ని దిగువన, ప్రధాన ప్రాతినిధ్యం, నేను వెళుతున్నాను అది ఒక ముక్కలు మెమరీ ఇవ్వాలని స్టాక్ న. F కోసం, నేను ఒక స్లైస్ ఇవ్వాలని వెళుతున్నాను స్టాక్ న మెమరీ. ఇప్పుడు, నేను నా సంప్రదించండి వచ్చింది మళ్ళీ సోర్స్ కోడ్. ప్రధాన స్థానిక వేరియబుల్స్ ఏమిటి? స్పష్టంగా ఏమీ, తద్వారా స్లైస్ ఉంది సమర్థవంతంగా ఖాళీ లేదా కూడా పెద్ద నేను తీసిన చేసిన వంటి. కానీ ఎఫ్ లో, నేను, ఒక స్థానిక వేరియబుల్ కలిగి ఇది x అంటారు. నేను ముందుకు వెళ్లి f ఇవ్వాలని వెళుతున్నాను ఇది x కాల్ మెమరీ భాగం. , 10 సార్లు 4 మరియు ఇప్పుడు malloc ఆ పేరు malloc 40, సో మెమరీ నుండి వస్తున్న? మేము ఒక చిత్రాన్ని తీసిన కాదు చేసిన ముందు ఈ ఇష్టం. కానీ దానిని సమర్థవంతంగా అని అనుకుంటే వీలు కాబట్టి ఒక, ఇక్కడ నుండి వస్తున్న, రెండు, మూడు, నాలుగు, ఐదు. మరియు ఇప్పుడు నేను ఈ యొక్క 40 అవసరం. సో నేను సూచించారు డాట్, డాట్, డాట్ చేస్తాను మరింత మెమరీ ఉందని కుప్ప నుండి తిరిగి వచ్చే. ఇప్పుడు చిరునామా ఏమిటి? లెట్ యొక్క మా అనియత ఎంచుకోండి ఎల్లప్పుడూ పరిష్కరించేందుకు - ఇది బహుశా జరగబోతోంది అయినప్పటికీ Ox123, పూర్తిగా వేర్వేరు ఏదో ఒక. ఆ మొదటి బైట్ యొక్క చిరునామా వార్తలు నేను malloc అడుగుతూ వెబ్ జ్ఞప్తి. సో చిన్న, ఒకసారి లైన్ లో 20, అమలు వాచ్యంగా ఏమిటి ఇక్కడ x లోపలి నిల్వ? Ox123. Ox123. మరియు ఆక్స్ రసహీనమైన ఉంది. ఇది కేవలం వార్తలు ఇక్కడ అర్థం ఒక హెక్సాడెసిమల్ సంఖ్య. కానీ కీ యొక్క నేను స్టోర్ చేసిన ఏమి ఉంది x లో, ఇది ఒక స్థానిక వేరియబుల్ ఉంది. కానీ దాని డేటా రకం, మళ్ళీ, ఒక Int ఒక చిరునామా. Well, నేను Ox123 నిల్వ వెళుతున్న. కానీ మళ్ళీ, కొద్దిగా చాలా ఆ ఉంటే నేను స్క్రోల్ చేయండి, అనవసరంగా సంక్లిష్టంగా తిరిగి, మేము ఈ దూరంగా వియుక్త చెయ్యవచ్చు చాలా సహేతుక మరియు కేవలం చెప్పే ఆ x ఒక మెమరీ యొక్క భాగం కు పాయింటర్. OK. ఇప్పుడు చేతిలో ప్రశ్న ఇలా - లైన్ 21, దాన్ని చేస్తుంది, బగ్గీ ఉంది. ఎందుకు? క్షమించాలి? ఇది లేదు - ఒకసారి మరింత చెప్తారు. బాగా, అది ఉచిత లేదు. తద్వారా రెండవ కానీ. సో ఇతర ప్రత్యేకంగా ఒక ఉంది లైన్ 21. సరిగ్గా. కోడ్ యొక్క ఈ సులభమైన మార్గం కేవలం ఒక ఉంది బఫర్ ఓవర్ఫ్లో, ఒక బఫర్ పారిపోవడం. ఒక బఫర్ కేవలం మెమరీ భాగం అర్థం. కానీ మెమరీ యొక్క భాగం పరిమాణంలో ఉంటుంది 10, 10 పూర్ణాంకాల, అంటే మనం వాక్యనిర్మాణ చక్కెర ద్వారా లోకి సూచిక అర్రే సంజ్ఞామానం, చదరపు బ్రాకెట్లలో, మీరు యాక్సెస్ x బ్రాకెట్ 0 x బ్రాకెట్ 1 x, బ్రాకెట్ డాట్, డాట్, డాట్. x బ్రాకెట్ 9 అతిపెద్ద ఒకటి. నేను x బ్రాకెట్ 10, ఎంత ఉంటే పేరు నేను నిజానికి మెమరీ లో వెళుతున్న? Well, నేను 10 Int ఉంటే - వీలు యొక్క నిజానికి అన్ని డ్రా ఇక్కడ ఈ అవ్ట్. తద్వారా మొదటి ఐదు సంవత్సరాల. ఇక్కడ ఇతర ఐదు ints వార్తలు. సో x బ్రాకెట్ 0 ఇక్కడ ఉంది. x బ్రాకెట్ 1 ఇక్కడ. x బ్రాకెట్ 9 ఇక్కడ ఉంది. x బ్రాకెట్ 10 ఇక్కడ, ఇది, నేను చెప్పడం చేస్తున్నాను అంటే లైన్ 21 లో, కంప్యూటర్ ఉంచాలి సంఖ్య పేరు? సంఖ్య 0 పేరు? బాగా, అది అవును 0 వార్తలు. కానీ కేవలం నిజానికి దాని 0 ఏకకాల రకం. ఇది సంఖ్య కావచ్చు 50, మేము శ్రమ అన్ని కోసం. కానీ మేము x బ్రాకెట్ వద్ద అది చాలు ప్రయత్నిస్తున్న పేరు ఈ ఇది 10, ప్రశ్న గుర్తు, డ్రా ఇది ఒక మంచి విషయం కాదు. ఈ కార్యక్రమం చాలా బాగా బలం ఫలితంగా క్రాష్. ఇప్పుడు, యొక్క ముందుకు వెళ్లి చూసేందుకు ఈ ఉంటే నిజానికి, ఏమి జరుగుతుంది ఉంది. మెమరీ చేయండి, తరువాత ఫైల్ను memory.c అంటారు. లెట్ యొక్క ముందుకు వెళ్లి అమలు ప్రోగ్రామ్ మెమరీలో. కాబట్టి మేము అదృష్ట వచ్చింది, నిజానికి, అది కనిపిస్తుంది. మేము అదృష్ట వచ్చింది. కాని ఇప్పుడు Valgrind అమలు లేదో యొక్క చూసేలా. మొదటి చూపులో, నా కార్యక్రమం వాటిని సంపూర్ణ సరైన అనిపించడం. అయితే Valgrind నాకు అమలు తెలపండి - లీక్-చెక్ మెమరీ పూర్తి సమానం. మరియు ఇప్పుడు నేను ఈ పరిగెడతారు - ఆసక్తికరమైన. చెల్లని వద్ద పరిమాణం 4 యొక్క వ్రాయండి memory.c యొక్క లైన్ 21. Memory.c యొక్క లైన్ 21 ఇది ఒకటి? ఓహ్, ఆసక్తికరమైన. కానీ వేచి. సైజు 4, సూచిస్తూ ఆ ఏమిటి? నేను మాత్రమే ఒక, వ్రాయడానికి లేదు కానీ అది పరిమాణం 4 యొక్క. ఎందుకు 4? అది ఒక Int, ఎందుకంటే ఇది మళ్ళీ, నాలుగు బైట్లు, ఉంది. సో Valgrind ఒక బగ్ దొరకలేదు నేను, నా కోడ్ చూసుకుంటూ ఉండడాన్ని, కాదు. మరియు ఉండవచ్చు మీ TF చేస్తాను లేదా కాదు. కానీ ఖచ్చితంగా దొరకలేదు కోసం Valgrind ఏమి మేము కూడా, అక్కడ ఒక తప్పు చేసిన మేము అదృష్ట వచ్చింది, మరియు అయితే కంప్యూటర్ నిర్ణయించుకుంది, EH, నేను క్రాషవ్వటానికి వెళ్ళడం లేదు మీరు ఒక బైట్, ఒక తాకిన కేవలం ఎందుకంటే మీరు లేదని మెమరీ Int యొక్క విలువ నిజానికి సొంత. బాగా, ఇక్కడ బగ్గీ ఏమి ఉంది. చిరునామా - ఈ ఒక వెర్రి చూస్తున్న చిరునామా హెక్సాడెసిమల్ లో. కేవలం ఎక్కడా కుప్ప ఉంది అంటే పరిమాణం 40 నిరోధించిన తర్వాత సున్నా బైట్లు కేటాయించబడుతుంది. నాకు ఇక్కడ దూరంగా మరియు చూద్దాం ఉంటే ఈ కొద్దిగా మరింత ఉపయోగకరంగా ఉంటుంది. ఆసక్తికరమైన. 40 బైట్లు ఖచ్చితంగా పోయాయి 1 నష్టం రికార్డు 1 లో. మళ్ళీ, కంటే ఎక్కువ పదాలు ఇక్కడ ఉపయోగకరంగా ఉంటుంది. కానీ, హైలైట్ పంక్తులు ఆధారంగా పేరు నేను బహుశా దృష్టి పెట్టాలి నా మరొక బగ్ కోసం శ్రద్ధ? Memory.c ఒక లైన్ 20 అనిపిస్తోంది. మేము లైన్ 20 తిరిగి వెళ్ళి కనుక, ఆ మీరు ముందు గుర్తించిన ఒక. మరియు అది బగ్గీ అవసరం లేదు. కానీ మేము ఈ దాని ప్రభావాలు తిరిగి. సో ఎలా నేను కనీసం సరి లేదు ఆ తప్పులను ఒకటి? నేను లైన్ 21 తర్వాత ఏమి కాలేదు? నేను, x యొక్క ఉచిత ఉంది అలా మెమరీ తిరిగి ఇవ్వాలని. మరియు నేను ఈ బగ్ ఎలా పరిష్కరించాలి? నేను ఖచ్చితంగా వెళ్ళాలి ఏ దూరంగా 0 కంటే. సో నాకు ప్రయత్నించండి మరియు ఈ తిరిగి అమలు తెలపండి. క్షమించాలి, ఖచ్చితంగా వెళ్ళండి ఏ దూరంగా 9 కంటే. మెమరీ చేయండి. Valgrind నాకు తిరిగి లెట్ ఒక పెద్ద విండోలో. మరియు ఇప్పుడు చూడండి. నీస్. అన్ని కుప్ప బ్లాక్స్ విడుదలయ్యారు. సంఖ్య దోషాలను సాధ్యమే. మరియు ఇక్కడ పైన, ప్రస్తావనే లేదు ఉంది చెల్లని హక్కు ఏ. కేవలం అత్యాశ పొందుటకు, మరియు లెట్ యొక్క చూడండి మరొక ప్రదర్శన ఉద్దేశించబడింది వెళ్ళి లేదు - నేను ఒక క్షణం క్రితం అదృష్ట వచ్చాం. మరియు ఈ 0 వాస్తవం బహుశా ఉంది అనవసరంగా తప్పుదోవ పట్టించే. కేవలం 50, కొంత అనియత అన్నారు యొక్క సంఖ్య, మెమరీ డాట్ స్లాష్ మెమరీ తయారు - ఇప్పటికీ అదృష్ట పొందుటకు. ఏమీ క్రాష్ యొక్క. నేను నిజంగా ఏదో ఊహించు వెర్రి, మరియు నేను 100 చేయండి. , నాకు మెమరీ రీమేక్ లెట్ డాట్ స్లాష్ మెమరీ - మళ్ళీ అదృష్ట వచ్చింది. ఎలా 1,000? దాటి ints, సుమారు, నేను ఎక్కడ ఉండాలి? మెమరీ చేయండి - ఇది డామన్. [నవ్వు] OK. యొక్క ఇకపై చుట్టూ విసిగిపోకండి కాదు లెట్. మెమరీ తిరిగి. అక్కడ మేము వెళ్ళి. అన్ని కుడి. సో స్పష్టంగా మీరు ఇండెక్స్ 100,000 ints మీరు ఉన్నాయి చోట దాటి మెమరీ, చెడు విషయాల జరిగే. సో ఈ ఖచ్చితంగా కాదు ఒక హార్డ్, ఫాస్ట్ పాలన. నేను విచారణ ఉపయోగించి రకం ఉంది మరియు లోపం పొందుటకు. కానీ ఈ, ఎందుకంటే, దీర్ఘ కథ చిన్న ఉంది మీ కంప్యూటర్ యొక్క మెమరీ కూడా విభజించబడింది ఈ విషయాలు లోకి భాగాలు అని. మరియు కొన్నిసార్లు, కంప్యూటర్ నిజానికి మీరు కొద్దిగా మరింత మెమరీ ఇచ్చింది మీరు అడిగే కంటే. కానీ సామర్థ్యం కోసం, ఇది కేవలం సులభం మరింత మెమరీ పొందుటకు కానీ మాత్రమే మీరు చెప్పండి మీరు ఒక భాగం పొందడానికి చేయవచ్చు. మరియు మీరు కొన్నిసార్లు అదృష్ట పొందుటకు ఉంటే, అందువలన, మీరు తాకే చేయవచ్చు మెమరీ మీకు సంబంధించినది కాదు. సందర్సకులలో మీ సంఖ్య హామీ కలిగి ఏమి విలువ మీరు, అక్కడ ఉండాలని ఉంటుంది చాలు ఎందుకంటే కంప్యూటర్ ఇప్పటికీ అది భావిస్తోంది మీదే, కానీ అది తప్పనిసరిగా మాత్రం కాదు లో మెమరీ మరొక విభాగం నొక్కండి కంప్యూటర్ మరియు ఒక తప్పు వంటి ప్రేరేపించడానికి ఇక్కడ ఈ ఒక. అన్ని కుడి. అప్పుడు ఏదైనా ప్రశ్నలు మెమొరీ? అన్ని కుడి. వద్ద, అప్పుడు, యొక్క ఇక్కడ ఒక లుక్ తీసుకుందాం మేము తీసుకోవడం చేసిన ఏదో కొంతకాలంగా మంజూరు, ఇది cs50.h. అని ఈ ఫైలు ఉంది సో ఈ ఫైలు. ఈ కేవలం ఒక మొత్తం బంచ్ ఉంటాయి టాప్ వ్యాఖ్యానాలు. మరియు మీరు ఈ ఉంటే చూశారు ఉండవచ్చు మీరు ఉపకరణం చుట్టూ ఎత్తిచూపారు. కానీ, అన్ని సమయం హాజరవుతారు మేము ఒక స్ట్రింగ్ ఉపయోగించారు ఉన్నప్పుడు పర్యాయపదంగా, మేము ప్రకటించారు మార్గాలుగా ఆ పర్యాయపదంగా ఈ తో రకం నిర్వచనం కోసం typedef కీవర్డ్. మరియు మేము తప్పనిసరిగా చెబుతున్న దాన్ని, తయారు చార్ స్టార్ పర్యాయపదంగా స్ట్రింగ్. అనగా ద్వారా స్టాక్ అని పిలిచే ఈ శిక్షణ చక్రాలు రూపొందించినవారు స్ట్రింగ్. ఇప్పుడు ఇక్కడ కేవలం ఒక నమూనా యొక్క getchar కోసం. మేము ముందు చూసిన ఉండవచ్చు, కానీ ఆ నిజానికి అది చేస్తుంది. getchar , వాదనలు సంఖ్య పడుతుంది ఒక చార్ తిరిగి. getdouble, వాదనలు సంఖ్య పడుతుంది డబుల్ తిరిగి. getfloat వాదనలు సంఖ్య, తిరిగి పడుతుంది ఫ్లోట్, మొదలగునవి. getint ఇక్కడ ఉంది. getlonglong ఇక్కడ ఉంది. మరియు getstring ఇక్కడ ఉంది. అంతే. ఈ ఊదా లైన్ మరొక ప్రాసెసర్ ఉంది ఎందుకంటే నిర్దేశకం ఇది ప్రారంభంలో హాష్ ట్యాగ్. అన్ని కుడి. కాబట్టి ఇప్పుడు నాకు cs50.c. లోకి వెళ్ళి తెలపండి మరియు మేము ఈ చాలా పొడవుగా మాట్లాడను ఉంటుంది. కానీ మీరు ఏది సంగ్రహావలోకనం ఇవ్వాలని అన్ని ఈ జరుగుతున్నాయి సమయం, నాకు వీలు - వీలు యొక్క getchar చేయండి. సో getchar ఎక్కువగా వ్యాఖ్యానాలు ఉంది. కానీ అది ఇలా కనిపిస్తుంది. సో ఈ వాస్తవ ఫంక్షన్ మేము కూడా చేసిన getchar మంజూరు కోసం తీసుకొని ఉంది. మరియు మేము ఈ ఒక ఉపయోగించని మాత్రం తరచుగా, ఉంటే ఎప్పుడూ, అది కనీసం ఆ సులభమైన. కనుక ఇది ఒక వెచ్చించడం ఉపయోగకరమని ఇక్కడ శీఘ్ర లుక్. సో getchar, అనంతమైన లూప్ ఉంది ఉద్దేశపూర్వకంగా స్పష్టంగా. ఇది అప్పుడు కాల్స్ - మరియు ఈ ఒక రకం కోడ్ యొక్క nice మళ్ళీ మనం రాశారు. ఇది getstring కాల్స్. అది ఏమి ఎందుకంటే ఒక చార్ పొందుటకు అర్థం? బాగా, మీరు అలాగే ఒక పొందుటకు ప్రయత్నించండి మొత్తం యూజర్ నుండి టెక్స్ట్ లైన్ మరియు అప్పుడు కేవలం ఒక చూడండి ఆ పాత్రలు. లైన్ 60 లో, ఇక్కడ ఒక చిన్న వార్తలు ఒక చిత్తశుద్ధిపై చెక్ బిట్. Getstring శూన్య తిరిగి ఉంటే, యొక్క ముందుకు వీలు. ఏదో తప్పు జరిగింది. ఇప్పుడు ఇది కాస్త బాధించే కానీ బహుశా సి చార్ గరిష్టంగా సంప్రదాయ సూచిస్తుంది ఏమి కేవలం దాని పేరు ఆధారంగా? అది స్థిరమైన వార్తలు. ఇది సంఖ్యా విలువ వంటిది మీతో సూచిస్తుంది చార్ అతిపెద్ద బహుశా సంఖ్య ఇది ​​ఒక కాటు, అతిపెద్ద సంఖ్య మీరు ఇది 255, , ఎనిమిది బిట్స్ ప్రాతినిధ్యం సున్నా నుంచి. నేను ఉన్నప్పుడు, ఈ ఫంక్షన్ లో, ఈ ఉపయోగించడానికి చేసిన మాత్రమే ఎందుకంటే, ఈ కోడు రాయడం ఏదో getchar లో తప్పు జరిగితే కానీ ఉంటే జీవితం లో దాని ఉద్దేశ్యం తిరిగి ఉంది చార్ మీరు ఏదో ఉండాలి యూజర్కు సంకేతంగా ఏదో తప్పు జరిగింది. మనం శూన్య తిరిగి. ఇది శూన్య ఒక పాయింటర్ అని హాజరవుతారు. మళ్ళీ, getchar ఉంది ఒక చార్ తిరిగి. సో సమావేశం, ఏదో పోతే తప్పు, మీరు ప్రోగ్రామర్, లేదా, ఉంది ఈ సందర్భంలో, నాకు గ్రంథాలయం, నేను కలిగి ఒక కేవలం ఉంటే ఏకపక్ష నిర్ణయించుకుంటారు ఏదో తప్పు జరిగితే, నేను వెళుతున్నాను నిజంగా ఇది సంఖ్య 255, తిరిగి మేము వినియోగదారు టైప్ కాదు ఇవ్వలేదు ద్వారా ప్రాతినిధ్యం పాత్ర మేము కలిగి ఎందుకంటే సంఖ్య 255 ఒక అది దొంగతనం ఒక అని పిలవబడే కాపలాదారుడు విలువ ఒక సమస్య సూచిస్తాయి. ఇప్పుడు దాన్ని చేస్తుంది ఆ పాత్ర 255 మీరు టైప్ ఏదో కాదు మీ కీబోర్డ్, కాబట్టి అది ఏ పెద్ద ఒప్పందం వార్తలు. వినియోగదారు నోటీస్ లేదు నేను ఈ పాత్ర దొంగిలించబడిన చేసిన. కానీ మీరు ఎప్పుడూ ఒక వ్యక్తి పేజీలు చూస్తున్న ఉంటే ఒక కంప్యూటర్ వ్యవస్థ కొన్ని సూచన , అని స్థిరంగా ఈ వంటి అన్ని పరిమితులను లోపం ఈ స్థిరంగా మైట్ సందర్భాల్లో తిరిగి, ఆ చేసింది అన్ని కొన్ని మానవ వార్తలు సంవత్సరాల క్రితం ఏకపక్ష నిర్ణయించారు ఈ ప్రత్యేక విలువ మరియు తిరిగి అది విషయంలో స్థిరమైన కాల్ ఏదో తప్పు జరిగితే. ఇప్పుడు మేజిక్ ఇక్కడ డౌన్ జరుగుతుంది. మొదటి, నేను లైన్ 67 లో ప్రకటించారు వెబ్ రెండు అక్షరాలు, C1 మరియు C2. ఆపై లైన్ 68 లో, నిజానికి ఉంది స్మృతిగా ఆ కోడ్ యొక్క ఒక లైన్ మా స్నేహితుడు printf, ఇచ్చిన అది కోట్స్ లో శాతం C లు కలిగి లేదు. కానీ ఇక్కడ ఏం గమనించవచ్చు. sscanf స్ట్రింగ్ స్కాన్ అంటే - ఒక ఆకృతీకరణ స్కాన్ అర్థం స్ట్రింగ్, ergo sscanf. ఆ అర్థం ఏమిటి? ఇది మీరు ఒక స్ట్రింగ్ sscanf వెళుతుందని అర్థం. మరియు లైన్ సంసార ఉంది సైన్ యూజర్ రకాల మీరు ఒక ఫార్మాట్ స్ట్రింగ్ వంటి sscanf వెళుతుందని ఏమిటి scanf చెబుతాడు ఈ మీరు యూజర్ సైన్ టైప్ ఉంది ఆశతో అప్పుడు మీరు పాస్-రెండు చిరునామాలు ఈ సందర్భంలో మెమరీ రాళ్లను,, నేను రెండు placeholders ఎందుకంటే. నేను దాన్ని చిరునామా ఇవ్వాలని వెళుతున్నాను C1 మరియు C2 యొక్క చిరునామా. మరియు మీరు ఒక ఫంక్షన్ ఇవ్వాలని గుర్తుచేసుకున్నారు కొన్ని వేరియబుల్ చిరునామా, ఏమిటి చిక్కుముడి? ఆ ఫంక్షన్ ఫలితంగా ఏమి చెయ్యగలరు అది ఒక చిరునామా ఇవ్వడం వేరియబుల్ గా వ్యతిరేకంగా వేరియబుల్ కూడా? ఇది కుడి, అది మార్చవచ్చు? మీరు ఎవరైనా ఒక భౌతికమైన ఒక చిహ్నం కలిగి ఉంటే చిరునామా, వారు అక్కడ వెళ్ళి చేయవచ్చు ఆ చిరునామా వద్ద కావలసిన. ఇక్కడ అదే ఆలోచన. మేము sscanf, రెండు చిరునామాకు పాస్ ఉంటే కూడా మెమరీ రాళ్లను, ఈ చిన్న మెమరీ, C1 మరియు C2 కొద్దిగా రాళ్లను, కానీ మేము వాటిని యొక్క చిరునామా చెప్పండి sscanf మార్చుకోవచ్చు. జీవితం లో sscanf యొక్క ప్రయోజనం సో, మేము చదవడానికి మనిషి పేజీ, చదవడానికి ఏమిటి యూజర్ టైప్ కలిగి వినియోగదారు కోసం ఆశిస్తున్నాము ఒక పాత్ర లో టైప్ చేసి మరొక పాత్ర, మరియు ఏ యూజర్ టైప్, మొదటి పాత్ర వెళ్తాడు ఇక్కడ, రెండవ పాత్ర ఇక్కడ వెళ్తాడు. ఇప్పుడు, జనాంతికంగా, ఈ, మరియు మీరు చేస్తాను మాత్రమే, డాక్యుమెంటేషన్ నుండి ఈ తెలుసు నేను అక్కడ ఒక ఖాళీ ఉంచాలి వాస్తవం నేను పట్టించుకోను అర్థం ఉంటే యూజర్ స్పేస్ బార్ కొన్ని హిట్స్ అతను లేదా ఆమె ఒక పడుతుంది ముందు పాత్ర, నేను పట్టించుకోకుండా వెళుతున్న ఏ తెల్లని స్థలం. కనుక, నేను నుండి తెలుసు డాక్యుమెంటేషన్. రెండవ% సి ఉంది వాస్తవం వైట్ స్పేస్ నిజానికి ఉద్దేశపూర్వక. నేను గుర్తించగలిగారు ఉండాలనుకుంటున్నాను ఉంటే యూజర్ ఇరుక్కొనిపోయింది లేదా సహకరించలేదు. నేను యూజర్ మాత్రమే టైప్ చేసి ఆశతో వెబ్ ఒక పాత్ర లో, అందువలన నేను ఆశతో వెబ్ ఆ sscanf మాత్రమే తిరిగి వెళ్తున్నారు విలువ 1 నేను చదవడానికి, మళ్ళీ, ఎందుకంటే డాక్యుమెంటేషన్, sscanf యొక్క ప్రయోజనం లో జీవితం యొక్క సంఖ్య తిరిగి ఉంది నిండిపోతాయి అని వేరియబుల్ యూజర్ ఇన్పుట్ తో. నేను రెండు వేరియబుల్స్ లో ఆమోదించింది చిరునామాలు, C1 మరియు C2. నేను ఆ, అయితే, ఆశతో వెబ్ ఒకే ఒక వాటిని చంపబడుతాడు ఎందుకంటే ఉంటే sscanf తిరిగి 2, బహుశా ఏమిటి తార్కికంగా చిక్కుముడి? యూజర్ నాకు ఒక ఇవ్వాలని లేదు పాత్ర నేను చెప్పాడు లేదా ఆమె. వారు బహుశా వద్ద టైప్ కనీసం రెండు అక్షరాలు. నేను బదులుగా రెండవ లేదు కనుక % సి, నేను, ఒక కలిగి స్పష్టముగా మరింత స్పష్టమైన ఉంటుంది విధానం, నేను ఒక మొదటి చూపులో అనుకుంటున్నాను, మీరు గుర్తించగలిగారు అవతరిస్తుంది లేదు యూజర్ మీరు మరింత ఇస్తున్నారు ఉంటే మీరు నిజంగానే కావలెను కంటే ఇన్పుట్. సో ఈ ఒక అవ్యక్త రూపం దోష పరిశీలన యొక్క. కానీ నేను ఇక్కడ ఏమి గమనించవచ్చు. ఒకసారి నేను వినియోగదారు ఒక ఇచ్చిన ఖచ్చితంగా రెడీ! పాత్ర, నేను చేస్తున్న, లైన్ విడిపించేందుకు getstring వ్యతిరేకంగా, ఇది క్రమంగా నేను తిరిగి అప్పుడు malloc ఉపయోగిస్తుంది, మరియు C1, నేను భావిస్తున్నట్లు పాత్ర యూజర్ అందిస్తుంది మరియు ఇది అందించింది. సో శీఘ్ర మాత్రమే చూడటం, కానీ getchar ఏ ప్రశ్నలు? మేము ఇతరులు కొన్ని తిరిగి వచ్చి ఉంటుంది. బాగా, నాకు ముందుకు వెళ్లి ఈ తెలియజేసేలా - కేవలం ప్రోత్సహించటానికి, ఇప్పుడు ఊహించు మా ఒక వారం పాటు సమయంలో చర్చ ఈ structs.h అనే ఫైలు ఉంది. మళ్ళీ, ఈ కేవలం ఒక రుచి ఉంది ముందుకు ఉంది ఏదో యొక్క. కానీ నోటీసు ఒక చాలా ఈ వ్యాఖ్యలు ఉంది. సో నాకు హైలైట్ వీలు మాత్రమే ఇప్పుడు కోసం ఆసక్తికరమైన భాగంగా. typedef - అదే కీవర్డ్ మళ్ళీ ఉంది. typedef మేము స్ట్రింగ్ డిక్లేర్ ఉపయోగించడానికి ఒక ప్రత్యేక డేటా టైప్. మీరు సరిక్రొత్త సృష్టించడానికి typedef ఉపయోగించవచ్చు ఉన్నప్పుడు లేవని డేటా రకాలు సి కనుగొన్నారు. ఉదాహరణకు, Int సి చార్ తో వస్తుంది సి డబుల్ C. తో వస్తుంది తో వస్తుంది కానీ ఒక విద్యార్థి యొక్క భావన ఉంది. మరియు ఇంకా అది చాలా ఉపయోగకరంగా ఉంటుంది నిల్వ ఒక ప్రోగ్రామ్ను రాయడం చేయగలరు ఒక వేరియబుల్ ఒక విద్యార్థి యొక్క ID నంబర్, వారి పేరు, మరియు వారి ఇంటి. ఇతర మాటలలో, మూడు ముక్కలు డేటా, ఒక Int మరియు ఒక ఇష్టం స్ట్రింగ్ మరియు మరొక స్ట్రింగ్. Typedef తో, ఏ అందంగా శక్తివంతమైన వార్తలు ఈ మరియు కీవర్డ్ sturct గురించి నిర్మాణం, మీరు, 2013 లో ప్రోగ్రామర్, నిజానికి మీ సొంత నిర్వచించలేదు సంవత్సరాల లేవని డేటా రకాలు క్రితం కానీ మీ ప్రయోజనాల సరిపోయేందుకు. మరియు ఇక్కడ, 19 ద్వారా పంక్తులు 13 లో, మేము వంటి, ఒక కొత్త డేటా రకం ప్రకటించారు చేస్తున్నారు ఒక Int, కానీ విద్యార్ధి కాల్. మరియు లోపల ఈ వేరియబుల్ కానుంది ఒక Int, ఒక స్ట్రింగ్, - మూడు అంశాలను మరియు ఒక స్ట్రింగ్. సో మీరు నిజంగా ఏది ఆలోచించవచ్చు ఈ అయినప్పటికీ, ఇక్కడ జరిగిన ఒక నేడు కోసం ఒక సాధారణీకరణ బిట్, ఒక విద్యార్థి తప్పనిసరిగా వెళ్తున్నారు ఈ లాగా. దాని యొక్క ఒక భాగం అవతరిస్తుంది ఒక ID తో మెమరీ, ఒక పేరు రంగంలో, మరియు ఒక ఇంటి రంగంలో. మరియు మేము ఆ రాళ్లను ఉపయోగించడం చెయ్యగలరు మెమరీ మరియు వాటిని యాక్సెస్ క్రింది. నేను struct0.c లోకి వెళ్ళి ఉంటే, ఇక్కడ ఒక ఉంది చాలా కాలం, కానీ తరువాత కోడ్ యొక్క నమూనా, ఆ ఈ కొత్త ట్రిక్ ఉపయోగిస్తుంది. సో మొదటి, మీ దృష్టిని ఆకర్షించడం వీలు టాప్ ఆసక్తికరమైన భాగాలకు. వెంటనే విద్యార్థులు 3 నిర్వచిస్తుంది, ప్రకటించాడు ఒక స్థిరంగా అని విద్యార్థులు మరియు హక్కుదారులు ఇది కేవలం ఏకపక్ష సంఖ్య 3, కాబట్టి నేను ఉపయోగించి మూడు విద్యార్థులను ఇప్పుడు ఈ కార్యక్రమానికి. ఇక్కడ ప్రధాన వస్తుంది. మరియు నోటీసు, ఎలా నేను డిక్లేర్ లేదు విద్యార్ధులు ఒక అర్రే? బాగా, నేను అదే వాక్యనిర్మాణాన్ని ఉపయోగించుకుంటాయి. పదం విద్యార్థి ఖచ్చితంగా కొత్తది. కానీ విద్యార్ధి, తరగతి, బ్రాకెట్ విద్యార్థులు. సో దురదృష్టవశాత్తు చాలా ఉంది ఇక్కడ నిబంధనలు మళ్ళీ యొక్క. ఈ కేవలం ఒక సంఖ్య. సో ఈ మూడు మాట్లాడుతూ వంటిది. తరగతి నేను కోరుకున్న ఏమి ఉంది వేరియబుల్ కాల్. నేను విద్యార్థులు పిలవగలరు. అయితే తరగతి, ఈ ఒక ఒక తరగతి కాదు ఆబ్జెక్ట్ ఓరియంటెడ్ జావా రకమైన మార్గం. ఇది కేవలం విద్యార్ధులు ఒక తరగతి యొక్క. మరియు ప్రతి మూలకం యొక్క డేటా రకం ఆ శ్రేణి లో విద్యార్థి. సో ఈ కొద్దిగా భిన్నంగా ఉంటుంది మరియు ఏదో విధంగా నుండి ఈ వంటి, అది కేవలం వార్తలు - నేను మూడు విద్యార్థులు ఇవ్వాలని మాట్లాడుతూ వెబ్ మరియు ఆ శ్రేణి తరగతి కాల్. అన్ని కుడి. ఇప్పుడు ఇక్కడ ఒక నాలుగు లూప్ యొక్క. ఈ వ్యక్తి యొక్క తెలిసిన - iterate మీద సున్నా నుంచి మూడు. మరియు ఇక్కడ సింటెక్స్ కొత్త ముక్క యొక్క. కార్యక్రమం, నాకు ప్రాంప్ట్ అవకాశముంది అది ఒక విద్యార్థి ఇవ్వాలని మానవ, ఒక Int ఇది ID. మరియు ఇక్కడ మీరు చేయవచ్చు సింటాక్స్ వార్తలు వద్ద ID రంగంలో ఏదో నిల్వ నగర తరగతి బ్రాకెట్ I. సో ఈ సింటాక్స్ కొత్త కాదు. ఈ నాకు ఎనిమిదవ ఇవ్వాలని అర్థం తరగతి విద్యార్థి. కానీ ఈ చిహ్నం కొత్తది. అప్ ఇప్పుడు వరకు, మేము, డాట్ ఉపయోగిస్తారు కాదు చేసిన ఈ వంటి కనీసం లో కోడ్. ఈ సాధనంగా తెలిసిన struct వెళ్ళండి ఒక విద్యార్థి మరియు అక్కడ ఏదో చాలు. అదేవిధంగా, ఈ తదుపరి లైన్ లో, 31, వెళ్ళి ముందుకు మరియు చాలు సంసార యూజర్ రకాల ఇక్కడ ఒక పేరు కోసం మరియు అవి ఏమి ఒక కోసం చేయండి ఇల్లు, అదే విషయం, ముందుకు వెళ్ళి, . ఇంట్లో అది చాలు. సో ఈ కార్యక్రమం దేనిని ఆ విధంగా? మీరు అక్కడ ఒక చిన్న టీజర్ చూడగలరు. నాకు ముందుకు వెళ్లి structs 0 తయారు చెయ్యాలి లెట్ డాట్ స్లాష్ struct 0, విద్యార్థి యొక్క ID 1, డేవిడ్ మాథుర్, విద్యార్థి ID 2 చెప్పటానికి. రాబ్ కిర్క్ల్యాండ్, విద్యార్థి ID 3. లారెన్ Leverit - మరియు ఈ ప్రోగ్రామ్ చేసిన మాత్రమే విషయం, ఇది, కేవలం పూర్తిగా ఏకపక్షంగా ఉంది నేను, ఈ సమాచారం ఆహా నేను ఎలా మాకు నేర్పించారు ఇప్పుడు ఆ structs ఉపయోగించడానికి, నేను కలిగి ఉంది ఇక్కడ ఈ అదనపు లూప్. నేను విద్యార్థులు శ్రేణి పైగా iterate. నేను మా, బహుశా ఇప్పుడు తెలిసిన స్నేహితుడు, ఉపయోగిస్తారు పదబంధానికి, stircomp సరిపోల్చండి చెక్ 8 విద్యార్థి యొక్క హౌస్ ఉంది మాథుర్ సమానంగా? మరియు కనుక కేవలం ఏదో ప్రింట్ ఏకపక్ష ఇష్టం, అవును, అది ఉంది. కానీ మళ్ళీ, కేవలం నాకు అవకాశాలు ఇవ్వడం మరియు ఉపయోగించడానికి మరియు తిరిగి ఈ కొత్త డాట్ సంజ్ఞామానం తిరిగి. సో ఎవరు కుడి, పట్టించుకుంటారు? ఒక విద్యార్థి ప్రోగ్రామ్ వస్తోంది కొంతవరకు అనియత, కానీ దాన్ని మారుతుంది మేము ఉపయోగకరమైన పనులు చేయగలనని ఈ ఉదాహరణకు క్రింది. ఈ ఒక చాలా సంక్లిష్టంగా struct ఉంది సి లో ఇది ఒక డజను లేదా మరింత ఖాళీలను సంపాదించి కొంతవరకు నిగూఢమైన పేరు. కానీ మీరు ఎప్పుడూ ఒక గ్రాఫిక్స్ విన్న చేసిన ఉంటే బిట్మ్యాప్ అని ఫైల్ ఫార్మాట్, BMP, అది హాజరవుతారు ఆ బిట్మ్యాప్ ఫైల్ ఫార్మాట్ అందంగా చాలా ఇది కనిపిస్తుంది. ఇది ఒక పెద్ద చిన్న నవ్వుతున్న ముఖం యొక్క. ఇది నేను జూమ్ చేసిన ఒక చిన్న చిత్రం యొక్క అందంగా పెద్ద నేను ప్రతి చూడగలిగిన కాబట్టి వ్యక్తిగత చుక్కలు లేదా పిక్సెల్. మేము ఒక సూచిస్తుంది ఇప్పుడు, అది మారుతుంది సంఖ్య 0, చెప్పటానికి, నల్లని డాట్. సంఖ్య 1 తో మరియు ఒక తెల్లని డాట్. సో ఇతర పదాలు లో, మీకు కావలసిన ఒక డ్రా నవ్వుతున్న ముఖం మరియు ఒక లో చిత్రం సేవ్ కంప్యూటర్, ఇది సున్నాలు నిల్వ మరియు సంతృప్తి పరుస్తుంది ఇలా వాటిని, పేరు, మళ్ళీ, వాటిని తెలుపు మరియు సున్నాలు నలుపు. మరియు కలిసి, మీరు సమర్థవంతంగా ఉంటే వాటిని మరియు సున్నాలు యొక్క పట్టీతో గట్టిగా చుట్టు ఒక, మీరు ఒక కలిగి పిక్సెల్ గ్రిడ్, మరియు మీరు లే ఉంటే వాటిని, మీరు ఒక అందమైన కలిగి కొద్దిగా నవ్వుతున్న ముఖం. ఇప్పుడు, బిట్మ్యాప్ ఫైల్ ఫార్మాట్, BMP, ఉంది ప్రభావవంతమైన హుడ్ కింద, కానీ మరింత పిక్సెళ్ళు SOT తో మీరు నిజానికి రంగులు సూచిస్తుంది. కానీ మీరు మరింత ఆధునిక ఉన్నప్పుడు BMP మరియు JPEG మరియు GIF వంటి ఫైల్ ఫార్మాట్లు ఇది మీకు, ఆ పరిచయం కావచ్చు డిస్కులో ఫైళ్లు సాధారణంగా మాత్రమే సున్నాలు మరియు పిక్సెళ్ళు కోసం వాటిని కలిగి, కానీ వారు అలాగే కొన్ని మెటాడేటా కలిగి - నిజంగా కాదు అర్థంలో మెటా డేటా కానీ కలిగి ఉపయోగం. ఇక్కడ ఈ ఖాళీలను విధిస్తుంది మరియు మేము P సెట్ల మరింత వివరంగా ఈ చూస్తారు 5, ఆ సున్నాలు మరియు వాటిని ముందు , ఒక చిత్రం లో పిక్సెళ్ళు ప్రాతినిధ్యం మెటాడేటా యొక్క ఒక సమూహం వలె ఉంది చిత్రం యొక్క పరిమాణాన్ని మరియు చిత్రం యొక్క వెడల్పు. మరియు నేను కొన్ని ఆఫ్ plucking వెబ్ గమనించవచ్చు ఇక్కడ అనియత విషయాలు - వెడల్పు మరియు ఎత్తు. బిట్ లెక్కించటం కొన్ని ఇతర విషయాలు. సో ఒక ఫైల్ లో కొన్ని మెటాడేటా లేదు. కానీ ఫైళ్లు వేశాడు ఎలా అర్థం చేసుకోవడానికి ఈ విధంగా, మీరు వాస్తవానికి అప్పుడు చిత్రాలు మార్చటానికి, చిత్రాలు తిరిగి డిస్కు నుండి, చిత్రాలు పరిమాణాన్ని. కానీ మీరు తప్పనిసరిగా కాదు వాటిని విస్తరించేందుకు. నేను ఒక ఫోటో అవసరమైన. నేను మీరు చూసిన, ఇక్కడ RJ తిరిగి వెళ్ళింది కొంతకాలంగా క్రితం తెరపై. నేను ఇక్కడ కీనోట్ తెరుచుకుంటుంది ఉంటే, ఈ ఉంది మీరు జూమ్ ప్రయత్నించండి ఉంటే జరుగుతుంది మరియు RJ విస్తరించేందుకు. అతను నిజంగా ఏ మెరుగుపడుతున్నాయి కాదు. ఇప్పుడు కీనోట్ అది ఒక గొడవ రకం కొద్దిగా, కేవలం వ్యాఖ్యానం కు RJ ముఖ్యంగా పొందుటకు లేదు వాస్తవం మీరు సైన్ జూమ్ చేసినప్పుడు మెరుగైన మరియు అది ఈ విధంగా లేకపోతే, చతురస్రాలు చూడండి? అవును, మీరు ఖచ్చితంగా చూడవచ్చు ఒక ప్రాజెక్టర్లో చతురస్రాలు. మీరు విస్తరించేందుకు మీరు పొందుటకు ఏమిటి. కానీ అర్థం చేసుకోవడానికి మా RJ లేదా నవ్వుతున్న ముఖం అమలు మాకు అనుమతిస్తుంది నిజానికి మార్పు కోడ్ వ్రాయడానికి ఈ విషయాలు. మరియు నేను, నేను ఈ నోట్ న అంతం ఇష్టం ఆలోచన ఒక 55 సెకన్ల, ఆ విస్తరించేందుకు నేను కాకుండా తప్పుదోవ పట్టించే చెప్పటానికి, ధైర్యం. [వీడియో ప్లేబ్యాక్] -అతను అబద్ధం యొక్క. ఏమి గురించి, నాకు తెలీదు. -కనుక మనం ఏమి తెలుసు? -ఆ 9:15 రే Santoya వద్ద ATM వద్ద ఉంది. -సో ప్రశ్న ఏమిటి అతను 9:16 వద్ద చేస్తున్న? షూటింగ్ తొమ్మిది మిల్లీ ఏదో వద్ద. అతను స్నిపర్ చూసింది. లేదా అతనితో పని. -వేచి. ఒక తిరిగి వెళ్ళు. దాన్ని మీరు చూస్తారు? , పూర్తి స్క్రీన్ తన ముఖాన్ని-తీసుకురండి. -అతని అద్దాలు. -ఉన్నాయి ప్రతిబింబం యొక్క. -ఆ Neuvitas బేస్బాల్ జట్టు. వారి చిహ్నం యొక్క. మరియు అతను ఎవరైతే అతడ్ని మాట్లాడుతున్నారా లో ఆ జాకెట్ ధరించి. [END వీడియో ప్లేబ్యాక్] డేవిడ్ J. మలన్: ఈ అవుతుంది సమస్య సెట్ 5 ఉంటుంది. వచ్చే వారం మీరు చూస్తారు. MALE చూడండి: తదుపరి CS50 వద్ద. [క్రికెట్ కిచకిచలు] [సంగీతాన్ని]