1 00:00:00,000 --> 00:00:10,970 >> [संगीत खेल] 2 00:00:10,970 --> 00:00:12,536 >> डेविड जे मालन: सब ठीक है. 3 00:00:12,536 --> 00:00:13,392 >> [हंसी] 4 00:00:13,392 --> 00:00:14,240 >> वापस स्वागत है. 5 00:00:14,240 --> 00:00:14,990 इस CS50 है. 6 00:00:14,990 --> 00:00:16,890 और इस सप्ताह पांच के अंत. 7 00:00:16,890 --> 00:00:20,020 और अब तक, हम बहुत ज्यादा है प्रदान के लिए ले जा रहा है कि वहां 8 00:00:20,020 --> 00:00:23,480 आप कर चुके हैं, इस संकलक, बजना मौजूद इस के माध्यम से लागू किया गया 9 00:00:23,480 --> 00:00:27,100 कहा जाता है अन्य उपकरण बनाने कि किसी भी तरह जादुई अपने स्रोत कोड धर्मान्तरित 10 00:00:27,100 --> 00:00:31,350 वस्तु कोड में, शून्य और लोगों कि आपके कंप्यूटर सीपीयू, केंद्रीय 11 00:00:31,350 --> 00:00:33,410 प्रोसेसिंग यूनिट, वास्तव में समझता है. 12 00:00:33,410 --> 00:00:36,770 लेकिन यह है कि एक नंबर है पता चला है में हुड के नीचे चल रहा 13 00:00:36,770 --> 00:00:38,690 इनपुट और आउटपुट के बीच. 14 00:00:38,690 --> 00:00:41,800 >> और मुझे लगता है हम मांस कि प्रस्ताव करने के लिए करना चाहते हैं थोड़ा और विस्तार में में है कि बाहर 15 00:00:41,800 --> 00:00:45,130 इन चार चरणों, कुछ कहा जाता है पूर्व प्रसंस्करण, कुछ 16 00:00:45,130 --> 00:00:48,300 हमने देखा है, जो संकलन बुलाया कोडांतरण बुलाया कुछ और 17 00:00:48,300 --> 00:00:49,420 लिंक में कुछ कहा. 18 00:00:49,420 --> 00:00:53,270 तो अब तक, हमारे में से कुछ में कार्यक्रम, हम तेज शामिल पड़ा है. 19 00:00:53,270 --> 00:00:56,650 हाल ही में हम कुछ तेज लिया है स्थिरांक के लिए परिभाषित करता है. 20 00:00:56,650 --> 00:01:00,660 तो यह पता चला है कि उन चीजों है कि हैश प्रतीक या लगी होती हैं 21 00:01:00,660 --> 00:01:04,150 पाउंड प्रतीक पूर्व प्रोसेसर हैं निर्देशों. 22 00:01:04,150 --> 00:01:07,960 बस यही बात है कहने का सिर्फ एक अच्छा तरीका है वास्तव में है कि कोड की एक पंक्ति 23 00:01:07,960 --> 00:01:12,280 पहले कुछ और ही में परिवर्तित कंप्यूटर भी बदलने की कोशिश अपने 24 00:01:12,280 --> 00:01:13,800 शून्य और लोगों में कार्यक्रम. 25 00:01:13,800 --> 00:01:19,000 >> उदाहरण के लिए, तेज मानक शामिल मैं / हे. घंटे, बहुत ज्यादा सिर्फ जाने का मतलब 26 00:01:19,000 --> 00:01:24,010 आगे, फ़ाइलों की सामग्री हड़पने stdio.h और उन्हें वहीं पेस्ट करें. 27 00:01:24,010 --> 00:01:25,880 तो शून्य और लोगों नहीं अभी तक उस बिंदु पर. 28 00:01:25,880 --> 00:01:27,470 यह वास्तव में सिर्फ एक प्रतिस्थापन है. 29 00:01:27,470 --> 00:01:30,790 और कहा कि तथाकथित दौरान किया है पूर्व प्रसंस्करण मंच, जब आप 30 00:01:30,790 --> 00:01:34,230 वास्तव में विशेष रूप से बजना चलाने या ज्यादातर मामलों में बनाओ. 31 00:01:34,230 --> 00:01:36,950 तो यह सब क्या हो रहा है पहला स्वचालित रूप से इस प्रकार अब तक. 32 00:01:36,950 --> 00:01:38,800 >> तब संकलन कदम आता है. 33 00:01:38,800 --> 00:01:40,920 लेकिन हम oversimplified किया गया है संकलन. 34 00:01:40,920 --> 00:01:45,060 एक कार्यक्रम संकलन सच का मतलब सी की तरह कुछ से ले 35 00:01:45,060 --> 00:01:48,430 स्रोत कोड हम नीचे, लिख रहा हूँ कुछ करने के लिए विधानसभा का आह्वान किया. 36 00:01:48,430 --> 00:01:52,900 विधानसभा भाषा एक कम स्तर है भाषा कि, शुक्र है, हम नहीं करेंगे 37 00:01:52,900 --> 00:01:55,480 करने के लिए बहुत अवसर है इस सेमेस्टर में लिखें. 38 00:01:55,480 --> 00:01:59,100 लेकिन यह सबसे कम स्तर पर है आप सचमुच लेखन शुरू कि भावना 39 00:01:59,100 --> 00:02:04,270 जोड़ना और घटाना और गुणा और लोड , स्मृति से और स्मृति को बचाने 40 00:02:04,270 --> 00:02:08,259 बहुत बुनियादी निर्देश है कि एक कंप्यूटर, हुड के नीचे, 41 00:02:08,259 --> 00:02:09,639 वास्तव में समझता है. 42 00:02:09,639 --> 00:02:14,930 >> अन्त में, संयोजन है कि भाषा लेता है हम किया गया है कि शून्य और लोगों को 43 00:02:14,930 --> 00:02:16,190 इस प्रकार अब तक का वर्णन. 44 00:02:16,190 --> 00:02:19,270 और सही मायने में अन्त में, तथाकथित वहाँ जोड़ने चरण, जो हम करेंगे 45 00:02:19,270 --> 00:02:22,360 बस एक पल में देखते हैं, जो जोड़ती है अपने शून्य और शून्य के साथ लोगों और 46 00:02:22,360 --> 00:02:24,870 लोगों को अन्य लोगों से पहले आपने बनाया है. 47 00:02:24,870 --> 00:02:26,660 >> तो यह सुपर सरल कार्यक्रम पर विचार करें. 48 00:02:26,660 --> 00:02:27,560 यह सप्ताह 1 से था. 49 00:02:27,560 --> 00:02:29,610 यह सिर्फ नमस्ते विश्व, ने कहा, स्क्रीन पर. 50 00:02:29,610 --> 00:02:30,920 हम बजना के माध्यम से इस भाग गया. 51 00:02:30,920 --> 00:02:33,200 या हम बनाने के माध्यम से भाग गया जो बजना भाग गया. 52 00:02:33,200 --> 00:02:36,170 और समय पर outputted जहां कुछ शून्य और लोगों. 53 00:02:36,170 --> 00:02:38,100 लेकिन यह वहाँ है पता चला है एक मध्यवर्ती कदम. 54 00:02:38,100 --> 00:02:40,460 मैं यहाँ पर जाना है - ओह, नहीं किया अभी तक उसे देखना चाहते हैं. 55 00:02:40,460 --> 00:02:44,800 मैं अपने उपकरण के लिए यहाँ जाओ और मैं यहाँ, hello.c ऊपर खुला 56 00:02:44,800 --> 00:02:46,160 कि एक ही कार्यक्रम है. 57 00:02:46,160 --> 00:02:48,600 और क्या मैं अपने टर्मिनल में क्या करने जा रहा हूँ यहां खिड़की मैं जा रहा हूँ 58 00:02:48,600 --> 00:02:51,430 , बजना चलाने के बजाय जो करना के सभी चार automates 59 00:02:51,430 --> 00:02:52,870 हमारे लिए उन कदमों. 60 00:02:52,870 --> 00:02:58,620 और मैं बजना एस क्या करने जा रहा हूँ फिर hello.c और तब दर्ज करें. 61 00:02:58,620 --> 00:03:00,590 >> और मैं एक निमिष शीघ्र मिल फिर, जो अच्छा है. 62 00:03:00,590 --> 00:03:05,280 और अब एक थोड़ा बड़ा खिड़की में, मैं यहां जीएडिट को खोलने के लिए जा रहा हूँ. 63 00:03:05,280 --> 00:03:09,610 और मुझे लगता है, कि एक फ़ाइल को खोलने के लिए जा रहा हूँ पता चला है, इस hello.s कहा जाता है 64 00:03:09,610 --> 00:03:11,870 कि विधानसभा भाषा है जैसा कि मैंने पहले भेजा. 65 00:03:11,870 --> 00:03:15,060 और इस विधानसभा कहा जाता है क्या है भाषा, काफी कम स्तर 66 00:03:15,060 --> 00:03:18,470 निर्देश है कि अपने इंटेल सीपीयू या यह कि अंदर जो कुछ भी है 67 00:03:18,470 --> 00:03:19,350 समझता है. 68 00:03:19,350 --> 00:03:24,480 और MOV कदम के लिए है. कॉल के लिए है एक बहुत ही निम्न स्तर समारोह बुला. 69 00:03:24,480 --> 00:03:26,380 उप घटाना के लिए है. 70 00:03:26,380 --> 00:03:30,370 >> तो आप के अंदर एक विशेष सीपीयू है जब आपके कंप्यूटर की, क्या यह बनाता है 71 00:03:30,370 --> 00:03:34,300 पर अलग, बनाम अन्य CPUs बाजार है, जो निर्देश यह 72 00:03:34,300 --> 00:03:39,460 समझता है और अक्सर कैसे कुशल यह यह कुछ क्रियान्वित करने में है, कितनी तेजी से है 73 00:03:39,460 --> 00:03:40,380 उन निर्देशों का. 74 00:03:40,380 --> 00:03:45,150 अब इस पर और अधिक के लिए, आप ले सकते हैं कॉलेज में अगले गिरावट CS61. 75 00:03:45,150 --> 00:03:48,170 लेकिन यहाँ हम हैं, उदाहरण के लिए, कुछ परिचित लग सकता है कि पहचानकर्ता. 76 00:03:48,170 --> 00:03:50,150 hello.c कार्यक्रम का नाम है. 77 00:03:50,150 --> 00:03:51,070 >> . पाठ - 78 00:03:51,070 --> 00:03:54,190 ब्याज की बहुत वहाँ नहीं है बस अब, याद है कि पाठ 79 00:03:54,190 --> 00:03:59,190 खंड, सोमवार के रूप में, जहां में है स्मृति अपने कार्यक्रम वास्तव में समाप्त होता है. 80 00:03:59,190 --> 00:04:01,330 तो यह है कि कम से कम थोड़ा है वहाँ परिचित. 81 00:04:01,330 --> 00:04:03,730 इधर, ज़ाहिर है, एक उल्लेख है हमारा मुख्य समारोह का. 82 00:04:03,730 --> 00:04:07,220 नीचे स्क्रॉल, इन बातों का उल्लेख कर कहा जाता रजिस्टरों का बहुत छोटा सा हिस्सा 83 00:04:07,220 --> 00:04:09,190 अपने वास्तविक CPU के अंदर स्मृति. 84 00:04:09,190 --> 00:04:12,930 और मैं नीचे स्क्रॉल यदि भी इसके अलावा, मैं किसी प्रकार देखते हैं 85 00:04:12,930 --> 00:04:14,240 ASCII का अप्रत्यक्ष उल्लेख. 86 00:04:14,240 --> 00:04:17,120 और वहाँ है, वास्तव में, कि स्ट्रिंग है, हैलो, अल्पविराम, दुनिया. 87 00:04:17,120 --> 00:04:20,079 >> तो लंबी कहानी को कम, यह कर दिया गया है आप के लिए हो रहा है, स्वचालित रूप से, 88 00:04:20,079 --> 00:04:22,140 हुड इस समय के सभी नीचे. 89 00:04:22,140 --> 00:04:26,450 और क्या हो रहा है वास्तव में एक बार होता है आप बजना, या जिस तरह के द्वारा भाग लिया 90 00:04:26,450 --> 00:04:29,150 , आप पहली बार हो रही है, बनाएं स्रोत कोड से, 91 00:04:29,150 --> 00:04:30,700 विधानसभा भाषा तथाकथित. 92 00:04:30,700 --> 00:04:35,210 फिर बजना इस विधानसभा में परिवर्तित होता है शून्य और लोगों को नीचे भाषा. 93 00:04:35,210 --> 00:04:38,340 और यह हम शुरू कर दिया है कि स्लाइड है पर वीक 0 में हमारी चर्चा - 94 00:04:38,340 --> 00:04:39,840 और फिर सप्ताह 1 पर. 95 00:04:39,840 --> 00:04:44,030 और फिर अंत में, उन शून्य और लोगों शून्य और लोगों के साथ संयुक्त कर रहे हैं 96 00:04:44,030 --> 00:04:47,190 उन पुस्तकालयों से हम ले जा रहा हूँ मानक मैं / हे या पसंद के लिए दी 97 00:04:47,190 --> 00:04:50,010 यहां तक ​​कि स्ट्रिंग पुस्तकालय या CS50 पुस्तकालय. 98 00:04:50,010 --> 00:04:54,200 >> इसलिए अधिक इस तस्वीर रंग नेत्रहीन, हम hello.c है. 99 00:04:54,200 --> 00:04:57,220 और यह, ज़ाहिर है, printf का उपयोग करता है दुनिया हैलो कहने के लिए कार्य करते हैं. 100 00:04:57,220 --> 00:05:01,810 संकलन कदम के लिए इसे नीचे ले जाता है उस फ़ाइल हम अभी भी, hello.s देखा 101 00:05:01,810 --> 00:05:04,290 कि आम तौर पर नष्ट कर दिया है, हालांकि स्वचालित रूप से आप के लिए. 102 00:05:04,290 --> 00:05:06,050 लेकिन यह है कि विधानसभा कोड है मध्य चरण में. 103 00:05:06,050 --> 00:05:09,750 और फिर हम विधानसभा इकट्ठा जब जब आप इतनी बात करने के लिए भाषा,, कि 104 00:05:09,750 --> 00:05:10,830 उन शून्य और लोगों को मिलता है. 105 00:05:10,830 --> 00:05:13,920 इसलिए हम पर आज प्रभावी रूप में तेजी से बढ़ी दिया है हम के लिए दी ले जा रहा हूँ, 106 00:05:13,920 --> 00:05:16,430 जा स्रोत कोड का मतलब कोड आपत्ति की. 107 00:05:16,430 --> 00:05:18,850 >> लेकिन अंत में, अब है कि एक ही चित्र - के लिए इस पर धक्का देना 108 00:05:18,850 --> 00:05:20,020 बाएं हाथ की ओर. 109 00:05:20,020 --> 00:05:22,880 और वहाँ शीर्ष में ध्यान दें कि मैं stdio.h उल्लेख किया है. 110 00:05:22,880 --> 00:05:25,030 यही कारण है कि हम शामिल कर दी है कि एक फ़ाइल है के लगभग सभी में 111 00:05:25,030 --> 00:05:26,250 हम लिखा है कार्यक्रम. 112 00:05:26,250 --> 00:05:28,830 और कहा कि जिनकी सामग्री फ़ाइल है प्रतिलिपि चिपकाया मिलता, 113 00:05:28,830 --> 00:05:30,350 प्रभावी ढंग से अपने कोड के ऊपर. 114 00:05:30,350 --> 00:05:34,170 लेकिन यह पता चला है कि एक कंप्यूटर पर सिस्टम कहीं, शायद वहाँ एक 115 00:05:34,170 --> 00:05:39,150 किसी साल लिखा था कि stdio.c फ़ाइल पहले उस के सभी लागू 116 00:05:39,150 --> 00:05:41,870 घोषित किया गया है कि कार्य करता है stdio.h में. 117 00:05:41,870 --> 00:05:45,465 >> अब हकीकत में उस पर शायद नहीं है अपने मैक या अपने पीसी या भी में 118 00:05:45,465 --> 00:05:47,660 CS50 उपकरण एक कच्ची सी कोड है. 119 00:05:47,660 --> 00:05:52,710 किसी ने पहले से ही यह संकलित और शामिल वस्तु कोड के लिए. ओ फ़ाइल या. एक 120 00:05:52,710 --> 00:05:56,020 एक साझा पुस्तकालय को संदर्भित करता है जो फ़ाइल, कि पहले से स्थापित किया गया है 121 00:05:56,020 --> 00:05:57,240 आप के लिए पूर्व संकलित. 122 00:05:57,240 --> 00:06:01,950 लेकिन वास्तव में वहां मौजूद लगता है कि समानांतर में हमारे कंप्यूटर stdio.c पर 123 00:06:01,950 --> 00:06:02,650 बजना के साथ. 124 00:06:02,650 --> 00:06:04,960 अपने कोड की संकलित किया जा रहा है और इकट्ठे. 125 00:06:04,960 --> 00:06:09,200 stdio.c के कोड संकलित किया जा रहा है इकट्ठे, इतना है कि यह बहुत पिछले 126 00:06:09,200 --> 00:06:13,730 यहाँ नीचे, कदम, हम किसी भी तरह के लिए है अपने शून्य और लोगों, इतनी बात करने के लिए लिंक 127 00:06:13,730 --> 00:06:18,430 एक में अपने या अपने शून्य और लोगों के साथ अंततः है कि साधारण प्रोग्राम 128 00:06:18,430 --> 00:06:20,540 नमस्ते बस बुलाया. 129 00:06:20,540 --> 00:06:23,340 >> तो है कि वह जादू के सभी है इस प्रकार अब तक हो गया. 130 00:06:23,340 --> 00:06:26,430 और इन लेने के लिए जारी रहेगा दी, लेकिन एहसास के लिए प्रक्रियाओं 131 00:06:26,430 --> 00:06:28,750 रसदार विवरण का एक बहुत कुछ है नीचे वहाँ पर जा रहा है. 132 00:06:28,750 --> 00:06:31,920 और यह क्या करता है आपके अंदर इंटेल के साथ कंप्यूटर 133 00:06:31,920 --> 00:06:33,940 विशेष रूप से अलग. 134 00:06:33,940 --> 00:06:37,020 >> तो उस पर ध्यान दें, यदि आप करना चाहते हैं इस शुक्रवार दोपहर के भोजन के लिए हमारे साथ, जाते हो 135 00:06:37,020 --> 00:06:41,570 हमेशा की जगह cs50.net/rsvp को, 13:15 इस शुक्रवार. 136 00:06:41,570 --> 00:06:43,400 और अब कुछ घोषणाओं. 137 00:06:43,400 --> 00:06:44,670 इसलिए हम कुछ अच्छी खबर है. 138 00:06:44,670 --> 00:06:45,970 और हम कुछ बुरी खबर है. 139 00:06:45,970 --> 00:06:47,260 यहाँ कुछ अच्छी खबर के साथ शुरू. 140 00:06:47,260 --> 00:06:52,038 141 00:06:52,038 --> 00:06:54,510 >> [कराहना] 142 00:06:54,510 --> 00:06:54,710 >> ठीक है. 143 00:06:54,710 --> 00:06:56,670 खैर, यह तकनीकी रूप से एक छुट्टी है, इसलिए यह इतना हम से एक उपहार नहीं है. 144 00:06:56,670 --> 00:06:58,030 लेकिन तब निश्चित रूप से बुरी खबर. 145 00:06:58,030 --> 00:07:00,550 146 00:07:00,550 --> 00:07:01,880 >> [कराहना] 147 00:07:01,880 --> 00:07:03,530 >> मैं समय की एक बहुत खर्च इन एनिमेशन पर. 148 00:07:03,530 --> 00:07:04,690 >> [हंसी] 149 00:07:04,690 --> 00:07:07,000 >> एक समीक्षा सत्र होगा इस सोमवार आ रहा है. 150 00:07:07,000 --> 00:07:08,340 यह 5:30 पर होने जा रहा है. 151 00:07:08,340 --> 00:07:11,210 हम इन सभी विवरण की याद दिलाएगा पाठ्यक्रम के बारे में ईमेल के माध्यम से 152 00:07:11,210 --> 00:07:13,470 दिन के समय के एक जोड़े में एक वेबसाइट. 153 00:07:13,470 --> 00:07:16,610 इसे फिल्माया और उपलब्ध कराया जाएगा उसके बाद शीघ्र ही. 154 00:07:16,610 --> 00:07:19,200 आप नहीं कर सकते तो अगर है कि सोमवार रात स्लॉट, चिंता मत करो. 155 00:07:19,200 --> 00:07:22,270 धारा यह आने वाले सप्ताह भी प्रश्नोत्तरी के लिए समीक्षा पर ध्यान केंद्रित. 156 00:07:22,270 --> 00:07:25,670 अपने अनुभाग है जो सोमवार, पर है वास्तव में विश्वविद्यालय छुट्टी, हम करेंगे 157 00:07:25,670 --> 00:07:26,920 अभी अनुभाग में मिलेंगे. 158 00:07:26,920 --> 00:07:28,890 आप बस कि नहीं कर सकते अनुभाग आप जा रहे हैं, क्योंकि 159 00:07:28,890 --> 00:07:29,860 दूर, वह ठीक है. 160 00:07:29,860 --> 00:07:33,710 एक रविवार या मंगलवार खंड या भाग लें धुन में है जो जेसन अनुभाग, करने के लिए 161 00:07:33,710 --> 00:07:35,110 उपलब्ध ऑनलाइन. 162 00:07:35,110 --> 00:07:37,490 >> तो, अधिक बुरी खबर है. 163 00:07:37,490 --> 00:07:41,960 तो सिलेबस के अनुसार, हम अगले शुक्रवार व्याख्यान है. 164 00:07:41,960 --> 00:07:43,690 लेकिन अच्छी खबर यह है - 165 00:07:43,690 --> 00:07:44,860 स्पष्ट रूप से, मैं इस पर बहुत अधिक समय बिताया. 166 00:07:44,860 --> 00:07:45,280 >> [हंसी] 167 00:07:45,280 --> 00:07:47,140 >> हम अगले शुक्रवार के व्याख्यान को रद्द कर देंगे. 168 00:07:47,140 --> 00:07:50,590 तो यह हमारे लिए एक उपहार हो, तो करेंगे आप वास्तव में एक अच्छा राहत हो सकता है 169 00:07:50,590 --> 00:07:52,990 इस सप्ताह और इसलिए दो सप्ताह के बीच. 170 00:07:52,990 --> 00:07:57,460 तो कोई व्याख्यान अगले सप्ताह, सिर्फ एक छोटे से आप होना चाहिए जिसके लिए थोड़ा प्रश्नोत्तरी, 171 00:07:57,460 --> 00:07:59,030 तेजी से उत्तेजित हो रही. 172 00:07:59,030 --> 00:08:03,870 >> तो चलो अब हमारे ध्यान में बारी वास्तव में ज्यादा दृश्य है कि कुछ 173 00:08:03,870 --> 00:08:06,990 और अधिक रोमांचक और मंच तैयार के लिए क्या क्षितिज पर होने जा रहा है 174 00:08:06,990 --> 00:08:08,420 सप्ताह का समय के सिर्फ एक जोड़ी में. 175 00:08:08,420 --> 00:08:12,160 पहली प्रश्नोत्तरी के बाद, हम बदल देंगे हमारी समस्या का ध्यान केंद्रित एक और सेट 176 00:08:12,160 --> 00:08:16,710 डोमेन विशिष्ट समस्या यह है कि के फोरेंसिक या सुरक्षा अधिक आम तौर पर. 177 00:08:16,710 --> 00:08:19,550 >> वास्तव में, इस समस्या के साथ परंपरा सेट मेरे लिए में से एक है 178 00:08:19,550 --> 00:08:24,850 भर में चलने के लिए शिक्षण साथी या सीए की कुछ तस्वीरें लेने परिसर 179 00:08:24,850 --> 00:08:29,450 पहचान योग्य लेकिन गैर स्पष्ट लोग, स्थानों, या चीजें, तो हर साल मैं 180 00:08:29,450 --> 00:08:34,520 किसी भी तरह गलती से नष्ट करने के लिए प्रबंधित या भ्रष्ट डिजिटल मीडिया कार्ड 181 00:08:34,520 --> 00:08:35,720 कि हमारे कैमरे के अंदर है. 182 00:08:35,720 --> 00:08:36,860 लेकिन कोई बड़ी बात नहीं. 183 00:08:36,860 --> 00:08:39,200 मुझे आगे जाना है और प्लग कर सकते हैं कि मेरे कंप्यूटर में. 184 00:08:39,200 --> 00:08:43,010 मैं इसके बारे में एक फोरेंसिक छवि बना है, तो कर सकते हैं शून्य को कॉपी करके, बोलने और करने के लिए 185 00:08:43,010 --> 00:08:46,830 कि स्मृति कार्ड के बंद लोगों को, चाहे इसकी एक एसडी कार्ड या कॉम्पैक्ट फ़्लैश कार्ड या 186 00:08:46,830 --> 00:08:48,100 आप से परिचित हो जो भी हो. 187 00:08:48,100 --> 00:08:49,300 और फिर हम कि बाहर हाथ कर सकते हैं. 188 00:08:49,300 --> 00:08:53,190 >> और तो अन्य के बीच आगे चुनौती बातें आप के लिए, लिखने के लिए किया जाएगा 189 00:08:53,190 --> 00:08:58,630 एक पूरी गुच्छा के ठीक हो जाए कि सी कोड मुझे और पता चला के लिए jpegs हो जाएगा 190 00:08:58,630 --> 00:09:00,190 उन लोगों, स्थानों, या बातें. 191 00:09:00,190 --> 00:09:03,340 और हम भी इस समस्या में, बात करेंगे के बारे में, सेट और दिन में आने के लिए 192 00:09:03,340 --> 00:09:04,440 अधिक आम तौर पर ग्राफिक्स. 193 00:09:04,440 --> 00:09:06,140 हम एक कोर्स उन का उपयोग किया है, के लिए बाहर तोड़. 194 00:09:06,140 --> 00:09:09,080 लेकिन आप की तरह प्रदान के लिए लिया गया है इन उच्च स्तर धारणाओं वहां मौजूद 195 00:09:09,080 --> 00:09:10,680 आयतों और अंडाकार की. 196 00:09:10,680 --> 00:09:12,450 लेकिन हुड के नीचे पिक्सल कर रहे हैं. 197 00:09:12,450 --> 00:09:14,370 और तुम शुरू करना पड़ा है उन के बारे में सोच रही है. 198 00:09:14,370 --> 00:09:18,800 या फिर आप पी सेट 4 सोचना होगा के लिए अपने ईंटों के बीच खाई के बारे में कैसे 199 00:09:18,800 --> 00:09:21,990 जल्दी आप गेंद पर चल रहा है कर रहे हैं बाहर तोड़ने के लिए स्क्रीन. 200 00:09:21,990 --> 00:09:24,830 तो इस धारणा है कि अपनी स्क्रीन पर डॉट्स है 201 00:09:24,830 --> 00:09:26,290 पहले से ही खेलने में आते हैं. 202 00:09:26,290 --> 00:09:29,430 >> अब आप क्या देखते हैं, हालांकि, है क्या आप एक कंप्यूटर स्क्रीन पर मिलता है. 203 00:09:29,430 --> 00:09:33,680 क्या तुमने कभी कुछ अच्छा या देख चुके है बुरा टीवी, बाधाओं वे बहुत ज्यादा हैं 204 00:09:33,680 --> 00:09:36,280 technophobes की तरह दर्शकों का इलाज जो वास्तव में नहीं है 205 00:09:36,280 --> 00:09:37,630 कंप्यूटिंग के बारे में ज्यादा पता है. 206 00:09:37,630 --> 00:09:40,840 और तो यह पुलिस के लिए बहुत आसान है कहने के लिए जासूसी, आप कर सकते हैं 207 00:09:40,840 --> 00:09:41,710 कि मेरे लिए साफ? 208 00:09:41,710 --> 00:09:42,710 या सही, बढ़ाने? 209 00:09:42,710 --> 00:09:45,550 बढ़ाएँ चर्चा शब्द में तरह है सबसे अधिक किसी भी अपराध से संबंधित शो. 210 00:09:45,550 --> 00:09:49,240 आप एक बहुत ले और अगर वास्तविकता है कर एक संदिग्ध की धुँधली तस्वीर 211 00:09:49,240 --> 00:09:51,620 कुछ बुरा, तुम नहीं कर सकते बस यह वृद्धि. 212 00:09:51,620 --> 00:09:53,080 तुम असीम में ज़ूम नहीं कर सकते हैं. 213 00:09:53,080 --> 00:09:56,350 आप किसी की की चमक में नहीं देख सकते हैं कि प्रतिबद्ध है जो आंख 214 00:09:56,350 --> 00:09:59,860 बावजूद विशेष अपराध, टीवी पर इस का प्रसार. 215 00:09:59,860 --> 00:10:04,110 >> और तो उस के साथ है कि प्रेरित करते हैं पर एक झलक के साथ सेट आगामी समस्या 216 00:10:04,110 --> 00:10:05,765 कुछ पता चलता है जो आप के साथ परिचित हो सकता है. 217 00:10:05,765 --> 00:10:06,500 >> [वीडियो प्लेबैक] 218 00:10:06,500 --> 00:10:07,835 >> ठीक है. 219 00:10:07,835 --> 00:10:09,956 अब, आप में एक अच्छे लग जाओ. 220 00:10:09,956 --> 00:10:17,060 221 00:10:17,060 --> 00:10:17,766 >> यह पकड़ो. 222 00:10:17,766 --> 00:10:18,658 कि पीछे. 223 00:10:18,658 --> 00:10:19,550 >> एक मिनट रुको. 224 00:10:19,550 --> 00:10:21,580 सही जाओ. 225 00:10:21,580 --> 00:10:21,800 >> वहाँ. 226 00:10:21,800 --> 00:10:22,690 कि रुक. 227 00:10:22,690 --> 00:10:23,692 >> पूर्ण स्क्रीन. 228 00:10:23,692 --> 00:10:23,846 >> ठीक है. 229 00:10:23,846 --> 00:10:24,154 कि रुक. 230 00:10:24,154 --> 00:10:25,140 >> फिर, उस पर देंगे कसो? 231 00:10:25,140 --> 00:10:27,090 >> उस आदमी पर वेक्टर में वापस पहिया द्वारा. 232 00:10:27,090 --> 00:10:29,730 >> यहीं इस मौके पर में ज़ूम. 233 00:10:29,730 --> 00:10:33,700 >> साथ सही उपकरण, imaged बढ़े और बढ़ाई जा सकती है. 234 00:10:33,700 --> 00:10:34,490 >> क्या है? 235 00:10:34,490 --> 00:10:35,870 >> यह एक वृद्धि कार्यक्रम है. 236 00:10:35,870 --> 00:10:36,793 >> कर सकते हैं आप स्पष्ट है कि किसी भी ऊपर? 237 00:10:36,793 --> 00:10:38,560 >> मैं नहीं जानता. 238 00:10:38,560 --> 00:10:39,090 चलो यह बढ़ाने चलो. 239 00:10:39,090 --> 00:10:41,690 >> खंड ए 6 बढ़ाएँ. 240 00:10:41,690 --> 00:10:43,510 >> मैं विस्तार बढ़ाया और - 241 00:10:43,510 --> 00:10:44,456 >> मैं बढ़ाने के लिए पर्याप्त लगता है कि वहाँ. 242 00:10:44,456 --> 00:10:45,402 अपनी स्क्रीन के लिए जारी. 243 00:10:45,402 --> 00:10:47,300 >> उसकी आंख में प्रतिबिंब-बढ़ाएँ. 244 00:10:47,300 --> 00:10:49,330 >> के माध्यम से इस रन दो. वीडियो वृद्धि. 245 00:10:49,330 --> 00:10:50,340 >> -एडगर, आप इस वृद्धि कर सकते हैं? 246 00:10:50,340 --> 00:10:52,320 >> रुको पर. 247 00:10:52,320 --> 00:10:54,290 >> -'Ve इस प्रतिबिंब पर काम कर रहा. 248 00:10:54,290 --> 00:10:55,560 >> -किसी का प्रतिबिंब. 249 00:10:55,560 --> 00:10:56,440 >> प्रतिबिंब. 250 00:10:56,440 --> 00:10:57,940 >> वहाँ एक प्रतिबिंब है आदमी के चेहरे की. 251 00:10:57,940 --> 00:10:58,860 >> प्रतिबिंब. 252 00:10:58,860 --> 00:10:59,710 >> वहाँ एक प्रतिबिंब है. 253 00:10:59,710 --> 00:11:00,900 >> दर्पण पर में ज़ूम. 254 00:11:00,900 --> 00:11:03,500 >> तुम एक प्रतिबिंब देख सकते हैं. 255 00:11:03,500 --> 00:11:04,700 >> कर सकते हैं आप यहाँ से छवि को बढ़ाने? 256 00:11:04,700 --> 00:11:05,700 >> कर सकते हैं आप यहीं उसे बढ़ाने? 257 00:11:05,700 --> 00:11:06,500 >> कर सकते हैं आप इसे बढ़ाने? 258 00:11:06,500 --> 00:11:07,380 >> कर सकते हैं आप इसे बढ़ाने? 259 00:11:07,380 --> 00:11:08,190 >> -क्या हम इस में वृद्धि? 260 00:11:08,190 --> 00:11:08,940 >> कर सकते हैं आप इसे बढ़ाने? 261 00:11:08,940 --> 00:11:10,280 >> पकड़ो एक दूसरे पर, मैं बढ़ाने करेंगे. 262 00:11:10,280 --> 00:11:11,570 >> दरवाजे पर में ज़ूम. 263 00:11:11,570 --> 00:11:12,180 >> -X10. 264 00:11:12,180 --> 00:11:13,052 >> ज़ूम. 265 00:11:13,052 --> 00:11:13,197 >> [हंसी] 266 00:11:13,197 --> 00:11:14,360 >> अंदर ले जाएँ 267 00:11:14,360 --> 00:11:15,100 >> बंद करो, रुको. 268 00:11:15,100 --> 00:11:15,740 >> बंद करो. 269 00:11:15,740 --> 00:11:16,290 >> यह ठहराव. 270 00:11:16,290 --> 00:11:19,390 >> चारों ओर एक 75 डिग्री घुमाने खड़ी करें. 271 00:11:19,390 --> 00:11:19,886 >> [हंसी] 272 00:11:19,886 --> 00:11:24,350 >> बंद करो, और वापस भाग को फिर दरवाजे के बारे में. 273 00:11:24,350 --> 00:11:26,330 >> एक छवि बढ़ाने मिला कि बिटमैप कर सकते हैं? 274 00:11:26,330 --> 00:11:28,990 >> शायद हम प्रदीप सेन का उपयोग कर सकते हैं खिड़कियों में देखने के लिए विधि. 275 00:11:28,990 --> 00:11:30,680 >> -यह सॉफ्टवेयर कला का राज्य है. 276 00:11:30,680 --> 00:11:31,676 >> आइकन मूल्य बंद है. 277 00:11:31,676 --> 00:11:34,166 >> सही संयोजन के साथ एल्गोरिदम की. 278 00:11:34,166 --> 00:11:38,399 >> -वह करने के लिए रोशनी एल्गोरिदम ले लिया है अगले स्तर और मैं उन्हें इस्तेमाल कर सकते हैं 279 00:11:38,399 --> 00:11:38,648 इस तस्वीर में वृद्धि. 280 00:11:38,648 --> 00:11:42,050 >> पर ताला और z-अक्ष बढ़ाना. 281 00:11:42,050 --> 00:11:42,760 >> -बढ़ाएँ. 282 00:11:42,760 --> 00:11:43,060 >> -बढ़ाएँ. 283 00:11:43,060 --> 00:11:43,760 >> -बढ़ाएँ. 284 00:11:43,760 --> 00:11:45,010 >> रुक और बढ़ाने के लिए. 285 00:11:45,010 --> 00:11:47,470 286 00:11:47,470 --> 00:11:47,910 >> [अंत वीडियो प्लेबैक] 287 00:11:47,910 --> 00:11:51,470 >> डेविड जे मालन: तो समस्या सेट 5 वहाँ क्या आगे झूठ है. 288 00:11:51,470 --> 00:11:55,260 तो हम जल्द ही एक बेहतर समझ मिल जाएगा की कब और क्यों आप कर सकते हैं 289 00:11:55,260 --> 00:11:57,300 और हमारे रास्ते में है कि वृद्धि नहीं कर सकते हैं. 290 00:11:57,300 --> 00:12:00,090 लेकिन पहले, चलो हमारे ध्यान में वापसी हम हूँ इमारत ब्लॉकों में से कुछ को 291 00:12:00,090 --> 00:12:02,250 उस कहानी को बताने में सक्षम होने की जरूरत है. 292 00:12:02,250 --> 00:12:05,580 >> तो हम पर इस तस्वीर को आकर्षित किया है कि याद सोमवार और एक छोटा सा पिछले सप्ताह. 293 00:12:05,580 --> 00:12:09,970 और यह चीजों के लेआउट का वर्णन आपके कंप्यूटर की मेमोरी में जब 294 00:12:09,970 --> 00:12:11,000 कुछ प्रोग्राम चल रहा है. 295 00:12:11,000 --> 00:12:14,310 तकनीक खंड ऊपर शीर्ष, याद है, संदर्भित करता है वास्तविक शून्य और लोगों को 296 00:12:14,310 --> 00:12:16,000 कि अपने कार्यक्रम की रचना करते हैं. 297 00:12:16,000 --> 00:12:19,340 वहाँ, कि नीचे, चलो कुछ initialized या uninitialized डेटा, जो आम तौर पर 298 00:12:19,340 --> 00:12:22,910 स्थिरांक की तरह बातें करने के लिए संदर्भित करता है या तार या है कि वैश्विक चर 299 00:12:22,910 --> 00:12:24,200 अग्रिम में घोषित किया गया. 300 00:12:24,200 --> 00:12:26,500 वहाँ ढेर है, लेकिन हम आऊँगा एक बिट में है कि करने के लिए वापस. 301 00:12:26,500 --> 00:12:27,410 >> और फिर ढेर नहीं है. 302 00:12:27,410 --> 00:12:30,660 में ट्रे का एक ढेर की तरह ज्यादा स्मृति हो जाता है, जहां कैफेटेरिया, यह है 303 00:12:30,660 --> 00:12:33,610 बहुस्तरीय और जब भी स्तरित आप एक कार्यक्रम में क्या करते हैं? 304 00:12:33,610 --> 00:12:36,380 305 00:12:36,380 --> 00:12:37,730 के लिए ढेर उपयोग क्या है? 306 00:12:37,730 --> 00:12:39,320 >> हाँ? 307 00:12:39,320 --> 00:12:40,000 >> समारोह के लिए बुलाया गया. 308 00:12:40,000 --> 00:12:42,890 आप एक समारोह कॉल किसी भी समय, यह है के लिए स्मृति का मुट्ठी भर लोगों को दी अपनी 309 00:12:42,890 --> 00:12:45,020 स्थानीय चर या उसके मापदंडों. 310 00:12:45,020 --> 00:12:48,810 और सचित्र रूप से, हम एक साथ देखते हैं कि कहा जाता लगातार समारोह, जब एक 311 00:12:48,810 --> 00:12:52,520 कॉल बी वे, सी डी कॉल कॉल ढेर पर स्तरित मिलता है. 312 00:12:52,520 --> 00:12:55,630 और उन लोगों के स्लाइस से प्रत्येक के भीतर स्मृति अनिवार्य रूप से एक अद्वितीय गुंजाइश है 313 00:12:55,630 --> 00:12:58,590 उस समारोह के लिए, जो, ज़ाहिर है, आप हाथ करने के लिए चाहते हैं समस्याग्रस्त है 314 00:12:58,590 --> 00:13:01,850 एक समारोह से एक और एक टुकड़े के लिए आप यह चाहते हैं कि डेटा की 315 00:13:01,850 --> 00:13:03,500 रूप बदलना या बदलने के लिए. 316 00:13:03,500 --> 00:13:08,060 >> तो सक्रिय करने के लिए हमारे समाधान क्या था एक ढेर के प्रतिनिधित्व वाले एक समारोह 317 00:13:08,060 --> 00:13:11,390 अंदर स्मृति को बदलने के लिए फ्रेम एक और ढेर फ्रेम का? 318 00:13:11,390 --> 00:13:14,590 कैसे एक दूसरे से उन दो बात करते हैं? 319 00:13:14,590 --> 00:13:18,510 तो संकेत या पतों के माध्यम से, जो, फिर से, बस, जहां से वर्णन 320 00:13:18,510 --> 00:13:22,280 स्मृति, एक विशिष्ट के माध्यम से संख्या, विशेष रूप से काटने 321 00:13:22,280 --> 00:13:23,830 मूल्य पाया जा सकता है. 322 00:13:23,830 --> 00:13:26,860 इसलिए हम जारी रखा भी पिछली बार याद कहानी और एक को देखा 323 00:13:26,860 --> 00:13:28,280 काफी छोटी गाड़ी कार्यक्रम. 324 00:13:28,280 --> 00:13:32,900 और इस कार्यक्रम के कुछ के लिए छोटी गाड़ी है कारणों, लेकिन सबसे ज्यादा चिंता की बात है 325 00:13:32,900 --> 00:13:34,620 यह क्या जाँच करने में विफल रहता है? 326 00:13:34,620 --> 00:13:39,111 327 00:13:39,111 --> 00:13:40,450 >> हाँ, यह निवेश की जांच करने में विफल रहता है. 328 00:13:40,450 --> 00:13:41,870 क्षमा करें? 329 00:13:41,870 --> 00:13:43,880 >> यह 12 से अधिक वर्ण है तो. 330 00:13:43,880 --> 00:13:47,260 तो बहुत चालाकी, memcopy बुला जब, जो, नाम का सुझाव है, बस 331 00:13:47,260 --> 00:13:50,630 इसकी दूसरा तर्क से प्रतियां स्मृति अपनी पहली बहस में. 332 00:13:50,630 --> 00:13:54,730 तीसरा तर्क, बहुत चालाकी है आप नहीं कर सुनिश्चित कर लें कि जाँच 333 00:13:54,730 --> 00:13:59,400 इस मामले में, लंबाई से अधिक को कॉपी बार की, वर्णों की संख्या, 334 00:13:59,400 --> 00:14:03,810 गंतव्य में, जो यह है सरणी सी. लेकिन समस्या यह है कि क्या 335 00:14:03,810 --> 00:14:07,230 सी ही पर्याप्त बड़ा नहीं है तो कि संभाल करने के लिए? 336 00:14:07,230 --> 00:14:09,900 आप की संख्या को कॉपी करने के लिए जा रहे हैं आपको दिया गया है जो बाइट्स. 337 00:14:09,900 --> 00:14:13,040 लेकिन आप वास्तव में क्या है और अधिक आप के लिए कमरा है से बाइट्स? 338 00:14:13,040 --> 00:14:16,770 >> खैर, इस कार्यक्रम बहुत मूर्खता बस आँख बंद करके यह जो कुछ भी लेने के लिए आय 339 00:14:16,770 --> 00:14:20,650 दी, नमस्कार बैकस्लैश 0 है महान स्ट्रिंग कम है 340 00:14:20,650 --> 00:14:22,040 पांच घर का काम की तरह, बस. 341 00:14:22,040 --> 00:14:26,470 लेकिन यह वास्तव में 12 अक्षर या अगर 1,200 वर्ण, हम आखिरी बार देखा था 342 00:14:26,470 --> 00:14:29,380 आप अभी पूरी तरह से करने के लिए जा रहे हैं कि स्मृति अधिलेखित कि 343 00:14:29,380 --> 00:14:30,470 आप का नहीं है. 344 00:14:30,470 --> 00:14:34,390 और सबसे खराब मामला है, आप लिखना चाहते हैं कि हम कहा जाता है कि वहाँ लाल भाग 345 00:14:34,390 --> 00:14:35,380 पता वापस - 346 00:14:35,380 --> 00:14:38,370 इस कंप्यूटर बस कहाँ है स्वचालित रूप से, आप के लिए, पीछे 347 00:14:38,370 --> 00:14:43,130 दृश्य, एक 32 बिट मूल्य दूर tucks कि यह चाहिए पता क्या करने के लिए यह याद दिलाता है 348 00:14:43,130 --> 00:14:47,080 वापस आने पर Foo, यह अन्य समारोह, को क्रियान्वित किया जाता है. 349 00:14:47,080 --> 00:14:49,320 यह एक तरह की रोटी टुकड़ा है जो यह देता है. 350 00:14:49,320 --> 00:14:52,490 आप उस पर लिखना चाहते हैं, संभावित, आप बुरा आदमी हो, तो जा सकते हैं 351 00:14:52,490 --> 00:14:54,750 संभावित पर लेने के किसी कंप्यूटर है. 352 00:14:54,750 --> 00:14:58,020 और तुम सबसे निश्चित रूप से होगा ज्यादातर मामलों में यह दुर्घटना. 353 00:14:58,020 --> 00:15:01,690 >> अब यह समस्या केवल exacerbated किया गया था हम स्मृति के बारे में बात करना शुरू कर के रूप में 354 00:15:01,690 --> 00:15:03,010 अधिक आम तौर पर प्रबंधन. 355 00:15:03,010 --> 00:15:07,150 और malloc, स्मृति आवंटन के लिए, एक है हम आवंटित करने के लिए उपयोग कर सकते हैं कि समारोह 356 00:15:07,150 --> 00:15:11,260 हम पहले से नहीं जानते कि स्मृति जब हम कुछ की जरूरत हो सकती है. 357 00:15:11,260 --> 00:15:13,960 तो, उदाहरण के लिए, मैं जाना अगर वापस यहां के उपकरण के लिए. 358 00:15:13,960 --> 00:15:21,010 और मैं पिछली बार hello2.c से ऊपर खुला, देखा, जो यहां इस कार्यक्रम याद 359 00:15:21,010 --> 00:15:23,500 इस तरह एक छोटे से कुछ, सिर्फ तीन लाइनें - 360 00:15:23,500 --> 00:15:27,940 अपने नाम राज्य, तो स्ट्रिंग नाम, बाईं तरफ, getstring के बराबर होती है. 361 00:15:27,940 --> 00:15:29,690 और फिर हम इसे बाहर प्रिंट उपयोगकर्ता का नाम. 362 00:15:29,690 --> 00:15:31,170 >> तो यह एक सुपर सरल कार्यक्रम था. 363 00:15:31,170 --> 00:15:34,870 स्पष्ट है, मुझे आगे चलते हैं और नमस्ते -2 बनाने. 364 00:15:34,870 --> 00:15:36,680 मैं डॉट स्लेश नमस्कार -2 में क्या करने जा रहा हूँ. 365 00:15:36,680 --> 00:15:37,750 आपका नाम राज्य - 366 00:15:37,750 --> 00:15:38,140 डेविड. 367 00:15:38,140 --> 00:15:38,840 दर्ज करें. 368 00:15:38,840 --> 00:15:39,540 नमस्ते डेविड. 369 00:15:39,540 --> 00:15:41,060 यह ठीक काम करने लगता है. 370 00:15:41,060 --> 00:15:43,140 लेकिन क्या वास्तव में हो रहा है यहाँ हुड के नीचे? 371 00:15:43,140 --> 00:15:44,670 पहले की कुछ परतों वापस छील करते हैं. 372 00:15:44,670 --> 00:15:48,380 स्ट्रिंग हम है सिर्फ एक पर्याय है क्या के लिए एहसास हुआ? 373 00:15:48,380 --> 00:15:49,110 चार सितारा. 374 00:15:49,110 --> 00:15:52,740 तो चलो इसे एक छोटे से अधिक रहस्यमय बना दे लेकिन अधिक तकनीकी रूप से सही है कि इस 375 00:15:52,740 --> 00:15:55,570 जिसका मतलब है कि एक चार सितारा है, नाम, हाँ, एक चर रहा है. 376 00:15:55,570 --> 00:15:59,920 लेकिन क्या नाम भंडार का पता है थोड़ा अजीब लगता है, जो एक चार, 377 00:15:59,920 --> 00:16:01,050 मैं एक स्ट्रिंग वापस हो रही है. 378 00:16:01,050 --> 00:16:03,580 मैं कई वापस हो रही है घर का काम नहीं एक चार. 379 00:16:03,580 --> 00:16:07,400 >> लेकिन ज़ाहिर है, आप केवल पहली आवश्यकता याद करने के लिए चार के पते जहां 380 00:16:07,400 --> 00:16:08,870 यही कारण है क्योंकि पूरे स्ट्रिंग है? 381 00:16:08,870 --> 00:16:12,700 आप जहां अंत का पता लगाने कैसे करते हैं स्ट्रिंग शुरुआत जानने है? 382 00:16:12,700 --> 00:16:13,630 बैकस्लैश शून्य. 383 00:16:13,630 --> 00:16:17,260 आपको यह पता लगाने की उन दो सुराग के साथ तो शुरुआत और अंत के पहले 384 00:16:17,260 --> 00:16:20,280 किसी भी स्ट्रिंग जब तक वे कर रहे हैं, कर रहे हैं ठीक है कि अशक्त के साथ बनाई 385 00:16:20,280 --> 00:16:22,110 टर्मिनेटर, कि बैकस्लैश शून्य. 386 00:16:22,110 --> 00:16:24,520 >> लेकिन इस getstring बुला रहा है. 387 00:16:24,520 --> 00:16:28,020 और यह कि getstring पता चला है यह सब समय की तरह कर दिया गया है 388 00:16:28,020 --> 00:16:28,820 हमारे लिए धोखा दे. 389 00:16:28,820 --> 00:16:32,460 यह सुनिश्चित किया जाना है, इस परिश्रम कर रहा है, उपयोगकर्ता से एक तार हो रही. 390 00:16:32,460 --> 00:16:34,580 लेकिन जहां कि स्मृति है से आ गया? 391 00:16:34,580 --> 00:16:38,440 हम यहाँ वापस तस्वीर के लिए जाना है और अगर सिर्फ एक से परिभाषा लागू 392 00:16:38,440 --> 00:16:42,610 पल पहले, जहां ढेर है कि कार्यों कहा जाता है जब स्मृति चला जाता है, 393 00:16:42,610 --> 00:16:45,370 कि तर्क से, आप getstring कॉल करते हैं, और फिर मैं में टाइप करें 394 00:16:45,370 --> 00:16:50,900 डी ए वी आई डी, लिखें जहां डी ए वी आई डी है बैकस्लैश शून्य पर आधारित, संग्रहीत 395 00:16:50,900 --> 00:16:53,480 कहानी हम अब तक हमें बता दिया है? 396 00:16:53,480 --> 00:16:55,190 >> इसमें शामिल होना प्रतीत होता है ढेर, सही? 397 00:16:55,190 --> 00:16:58,120 आपको मिल स्ट्रिंग कॉल जब आप एक मिल ढेर पर स्मृति का छोटा टुकड़ा. 398 00:16:58,120 --> 00:17:01,630 तो यह है कि डी ए वी आई डी कारण खड़ा है बैकस्लैश शून्य संग्रहीत किया जाता है 399 00:17:01,630 --> 00:17:02,770 वहाँ ढेर में. 400 00:17:02,770 --> 00:17:07,680 लेकिन रिटर्न getstring, एक मिनट रुको इतनी बात करने के लिए कि स्ट्रिंग, जो साधन 401 00:17:07,680 --> 00:17:11,700 यह कैफेटेरिया से ट्रे है ढेर हटा लिया है. 402 00:17:11,700 --> 00:17:14,560 और हम हैं कि जैसे ही एक के रूप में पिछली बार कहा फ़ंक्शन देता है, और आपको लगता है कि ले 403 00:17:14,560 --> 00:17:20,109 इसलिए, ढेर बंद, क्या बात है, ट्रे आप के अवशेष के बारे में कल्पना कर सकते हैं 404 00:17:20,109 --> 00:17:21,819 कि स्मृति? 405 00:17:21,819 --> 00:17:25,160 मैं एक तरह से प्रश्न चिह्न के रूप में उन्हें redrew वे प्रभावी बन क्योंकि 406 00:17:25,160 --> 00:17:26,250 अज्ञात मूल्यों. 407 00:17:26,250 --> 00:17:29,500 वे पुन: उपयोग किया जा सकता है जब कुछ अगले समारोह कहा जाता है. 408 00:17:29,500 --> 00:17:31,870 >> दूसरे शब्दों में, हम भी हो अगर भंडारण हो करने के लिए - 409 00:17:31,870 --> 00:17:34,350 मैं एक त्वरित तस्वीर आकर्षित करेंगे यहां ढेर की. 410 00:17:34,350 --> 00:17:38,690 हम नीचे ड्राइंग कर रहे हैं तो मेरी स्मृति खंड की, और हम कह देंगे 411 00:17:38,690 --> 00:17:42,230 इस स्मृति की जगह है कि मुख्य और शायद ARG सी और के कब्जे में 412 00:17:42,230 --> 00:17:46,790 ARG वी और कार्यक्रम में कुछ और, getstring जब कहा जाता है, 413 00:17:46,790 --> 00:17:51,120 संभवतः हो जाता getstring यहां स्मृति का एक हिस्सा. 414 00:17:51,120 --> 00:17:53,940 और फिर डी ए वी आई डी किसी भी तरह इस समारोह में समाप्त होता है. 415 00:17:53,940 --> 00:17:55,320 और मैं oversimplify करने जा रहा हूँ. 416 00:17:55,320 --> 00:18:00,050 लेकिन चलो मान लेते हैं कि अपने डी ए वी आई डी शून्य बैकस्लैश. 417 00:18:00,050 --> 00:18:03,500 तो यह कई बाइट्स में उपयोग किया जाता है getstring के लिए फ्रेम. 418 00:18:03,500 --> 00:18:08,270 >> लेकिन जैसे ही रिटर्न getstring के रूप में, हम पिछली बार कहा कि पर इस स्मृति 419 00:18:08,270 --> 00:18:11,340 यहाँ सब हो जाता है - woops! - 420 00:18:11,340 --> 00:18:14,270 सभी प्रभावी रूप से मिट जाता है. 421 00:18:14,270 --> 00:18:17,220 और हम सवाल के रूप में अब यह सोच सकते हैं कौन जानता है, क्योंकि निशान 422 00:18:17,220 --> 00:18:18,720 क्या है कि स्मृति की बनने जा रही है. 423 00:18:18,720 --> 00:18:22,130 दरअसल, मैं बहुत अक्सर कार्य कॉल getstring के अलावा अन्य. 424 00:18:22,130 --> 00:18:24,750 और जैसे ही मैं कुछ अन्य फोन शायद नहीं में, getstring से समारोह 425 00:18:24,750 --> 00:18:28,860 हम सिर्फ देखा है कि इस विशेष कार्यक्रम लेकिन कुछ अन्य, निश्चित रूप से कुछ अन्य 426 00:18:28,860 --> 00:18:34,180 समारोह में दिया जा रहा खत्म हो सकता है ढेर में यह अगले जगह. 427 00:18:34,180 --> 00:18:39,410 >> तो यह है कि getstring भंडार नहीं किया जा सकता ढेर पर डी ए वी आई डी मैं करूंगा क्योंकि 428 00:18:39,410 --> 00:18:41,040 तुरंत उस तक पहुँच खो देते हैं. 429 00:18:41,040 --> 00:18:43,720 लेकिन हम वे getstring पता केवल क्या देता है? 430 00:18:43,720 --> 00:18:47,220 यह करने के लिए वापस नहीं है मुझे छह अक्षर. 431 00:18:47,220 --> 00:18:51,090 यह वास्तव में किया क्या लौट रहा है हम पिछली बार निष्कर्ष है? 432 00:18:51,090 --> 00:18:52,480 पहले से पता. 433 00:18:52,480 --> 00:18:56,650 इसलिए किसी भी तरह, आप getstring जब कहा जाता है, इसके लिए स्मृति का एक हिस्सा आवंटन है 434 00:18:56,650 --> 00:18:59,620 उपयोगकर्ताओं को लिखें और कि स्ट्रिंग तो इसके बारे में पता लौटने. 435 00:18:59,620 --> 00:19:02,930 और यह पता चला है कि जब आप चाहते हैं इस में स्मृति आवंटित करने के लिए समारोह 436 00:19:02,930 --> 00:19:08,390 रास्ते और कहा जाता है, जो व्यक्ति के लिए वापसी उस समारोह का पता 437 00:19:08,390 --> 00:19:11,870 स्मृति की है कि हिस्सा है, तुम बिल्कुल पर ढेर में नहीं डाल सकते हैं 438 00:19:11,870 --> 00:19:14,750 नीचे, कार्यात्मक यह सिर्फ इसलिए है क्योंकि तुम्हारा नहीं बन करने जा बहुत 439 00:19:14,750 --> 00:19:17,800 जल्दी है, तो आप शायद अनुमान लगा सकते हैं जहां हम शायद यह टॉस करने के लिए जा रहे हैं 440 00:19:17,800 --> 00:19:20,130 इसके बजाय, ढेर तथाकथित. 441 00:19:20,130 --> 00:19:25,290 >> तो अपनी स्मृति के नीचे के बीच लेआउट और अपनी याददाश्त के ऊपर 442 00:19:25,290 --> 00:19:26,820 लेआउट क्षेत्रों की एक पूरी गुच्छा रहे हैं. 443 00:19:26,820 --> 00:19:29,270 एक ढेर है, और सही यह ऊपर ढेर है. 444 00:19:29,270 --> 00:19:33,680 और ढेर सिर्फ एक अलग हिस्सा की है कार्यों के लिए इस्तेमाल नहीं कर रहा है कि स्मृति 445 00:19:33,680 --> 00:19:34,770 वे कहते हैं जब. 446 00:19:34,770 --> 00:19:38,100 यह अब तक याद है, के लिए प्रयोग किया जाता है जब आप एक समारोह कुछ ले लो चाहते हैं 447 00:19:38,100 --> 00:19:42,700 स्मृति और यह है पर लटका करने में सक्षम हो इस पर नियंत्रण खोने के बिना. 448 00:19:42,700 --> 00:19:45,550 >> अब आप शायद तुरंत सका यह नहीं है कि देखना 449 00:19:45,550 --> 00:19:48,060 जरूरी नहीं कि एक सही डिजाइन. 450 00:19:48,060 --> 00:19:51,350 अपने कार्यक्रम पर स्मृति आवंटित रूप आप अधिक से कॉल स्टैक, या के रूप में 451 00:19:51,350 --> 00:19:55,540 आप आवंटित अधिक काम करता है, या के रूप में malloc बंद के रूप में साथ ढेर पर स्मृति 452 00:19:55,540 --> 00:20:00,690 getstring कर रही है, क्या स्पष्ट रूप से है अपरिहार्य समस्या लगती है? 453 00:20:00,690 --> 00:20:00,860 >> ठीक है. 454 00:20:00,860 --> 00:20:03,150 इस तथ्य की तरह है कि इन तीरों एक दूसरे को इशारा कर रहे हैं 455 00:20:03,150 --> 00:20:04,380 शुभ नहीं है. 456 00:20:04,380 --> 00:20:08,630 और वास्तव में, हम बहुत जल्दी से दुर्घटना सकता किसी भी तरीके की संख्या में एक कार्यक्रम. 457 00:20:08,630 --> 00:20:12,050 वास्तव में, मुझे लगता है हम हो सकता है गलती से एक बार यह किया. 458 00:20:12,050 --> 00:20:14,020 या नहीं तो, चलो यह करते हैं जानबूझ अब. 459 00:20:14,020 --> 00:20:21,330 मुझे आगे जाना है और सुपर जल्दी लिखने दो. dontdothis.c एक कार्यक्रम बुलाया. 460 00:20:21,330 --> 00:20:26,730 और अब मैं यहाँ में जाने के लिए और करेंगे तेज stdio.h शामिल है. 461 00:20:26,730 --> 00:20:32,620 समारोह foo लेता घोषित करते हैं तर्क नहीं, जो है 462 00:20:32,620 --> 00:20:34,040 शून्य से के रूप में अच्छी तरह से चिह्नित. 463 00:20:34,040 --> 00:20:37,830 >> और फू क्या करने जा रहा है केवल एक चीज है शायद नहीं है, जो foo कॉल 464 00:20:37,830 --> 00:20:39,100 चतुर विचार है, लेकिन ऐसा ही होगा. 465 00:20:39,100 --> 00:20:40,490 मुख्य शून्य ईएनटी. 466 00:20:40,490 --> 00:20:45,270 अब केवल मुख्य बात यह जा रहा है ऐसा करने के लिए के रूप में अच्छी तरह से कॉल foo है. 467 00:20:45,270 --> 00:20:51,050 और बस kicks के लिए, मैं जा रहा हूँ आगे यहाँ और से printf "नमस्ते कहना 468 00:20:51,050 --> 00:20:52,340 foo. " 469 00:20:52,340 --> 00:20:52,890 >> ठीक है. 470 00:20:52,890 --> 00:21:00,160 मैं किसी भी गलती नहीं मिला तो अगर, Dontdothis डॉट स्लेश बनाओ. 471 00:21:00,160 --> 00:21:01,960 और हम एक बड़ी खिड़की में यह करते हैं - 472 00:21:01,960 --> 00:21:03,210 डॉट, dontdothis स्लेश. 473 00:21:03,210 --> 00:21:07,590 474 00:21:07,590 --> 00:21:08,840 चलो. 475 00:21:08,840 --> 00:21:10,940 476 00:21:10,940 --> 00:21:11,890 उह ओह. 477 00:21:11,890 --> 00:21:13,100 जाहिर है, आप ऐसा कर सकते हैं. 478 00:21:13,100 --> 00:21:15,190 लानत है. 479 00:21:15,190 --> 00:21:16,190 ठीक है. 480 00:21:16,190 --> 00:21:16,580 रुको. 481 00:21:16,580 --> 00:21:17,370 द्वारा खड़े हो जाओ. 482 00:21:17,370 --> 00:21:18,270 हम किया था - 483 00:21:18,270 --> 00:21:20,110 हम बनाने के साथ इसका इस्तेमाल किया था. 484 00:21:20,110 --> 00:21:22,050 >> [आह] 485 00:21:22,050 --> 00:21:25,110 >> मुझे पता है, लेकिन मुझे लगता है कि हम सिर्फ इतना है कि नष्ट कर दिया. 486 00:21:25,110 --> 00:21:28,410 उह, हाँ. 487 00:21:28,410 --> 00:21:30,660 लानत है. 488 00:21:30,660 --> 00:21:32,640 इस रोब समाधान. 489 00:21:32,640 --> 00:21:34,678 क्या? 490 00:21:34,678 --> 00:21:35,928 यह बहुत सरल है. 491 00:21:35,928 --> 00:21:43,820 492 00:21:43,820 --> 00:21:47,360 हाँ, हम अनुकूलन बंद कर दिया. 493 00:21:47,360 --> 00:21:48,970 ठीक है, अलविदा खड़े हो जाओ. 494 00:21:48,970 --> 00:21:49,950 अब मैं बेहतर महसूस करते हैं. 495 00:21:49,950 --> 00:21:51,390 ठीक है. 496 00:21:51,390 --> 00:21:51,780 ठीक है. 497 00:21:51,780 --> 00:21:53,430 >> तो चलो इस recompile जाने - 498 00:21:53,430 --> 00:21:55,880 आप dontdothis बनाओ. 499 00:21:55,880 --> 00:22:00,090 आप को यह नाम बदलने के लिए हो सकता है बस एक पल में dothis.c. 500 00:22:00,090 --> 00:22:00,710 हम वहाँ जाते हैं. 501 00:22:00,710 --> 00:22:01,240 धन्यवाद. 502 00:22:01,240 --> 00:22:02,050 ठीक है. 503 00:22:02,050 --> 00:22:05,480 मैं मुद्रण था ताकि तथ्य कुछ बाहर सिर्फ वास्तव में था 504 00:22:05,480 --> 00:22:08,150 प्रक्रिया धीमा है जिसके द्वारा हम उस बिंदु पर पहुंच गया होता. 505 00:22:08,150 --> 00:22:08,510 ठीक है. 506 00:22:08,510 --> 00:22:08,870 ओफ़्फ़! 507 00:22:08,870 --> 00:22:11,180 >> तो क्या वास्तव में हो रहा है? 508 00:22:11,180 --> 00:22:14,440 वहाँ कारण, एक तरफ बस के रूप में एक है, इनपुट के मामले में कुछ भी कर रही है और 509 00:22:14,440 --> 00:22:17,270 उत्पादन में धीमी हो जाता है क्योंकि आप करने के लिए वर्ण लिखने के लिए है 510 00:22:17,270 --> 00:22:18,600 स्क्रीन, यह स्क्रॉल करने के लिए है. 511 00:22:18,600 --> 00:22:21,720 कहानी को कम इतने लंबे समय, मैं वास्तव में था इतना अधीर हुआ, हम होगा 512 00:22:21,720 --> 00:22:23,260 साथ ही यह अंतिम परिणाम देखा. 513 00:22:23,260 --> 00:22:26,220 मैं प्रिंट अप की सवारी मिल गया, अब जब कि हम अभी यह देखना. 514 00:22:26,220 --> 00:22:28,410 तो ऐसा क्यों हो रहा है. 515 00:22:28,410 --> 00:22:31,300 ठीक है, बिल्कुल सरल व्याख्या,, है कि foo शायद नहीं करना चाहिए 516 00:22:31,300 --> 00:22:32,500 खुद को बुला रहे हो. 517 00:22:32,500 --> 00:22:34,470 >> अब सामान्य शब्दों में, इस प्रत्यावर्तन है. 518 00:22:34,470 --> 00:22:36,970 और हम एक दो सप्ताह में सोचा पहले पुनरावर्ती अच्छा है. 519 00:22:36,970 --> 00:22:40,330 Recursion इस जादुई तरीका का है सुपर संक्षेप में अपने आप को व्यक्त. 520 00:22:40,330 --> 00:22:41,400 और यह सिर्फ काम करता है. 521 00:22:41,400 --> 00:22:45,060 लेकिन सभी की एक प्रमुख विशेषता है हम बात कर ली है पुनरावर्ती कार्यक्रमों 522 00:22:45,060 --> 00:22:48,260 के बारे में और इस प्रकार अब तक देखा, जो वे क्या किया था? 523 00:22:48,260 --> 00:22:52,610 कुछ हार्ड कोडित किया गया एक आधार के मामले, कुछ स्थितियों में कहा कि मामला 524 00:22:52,610 --> 00:22:56,210 स्पष्ट रूप से है, जो foo फोन नहीं है यहाँ नहीं मामले. 525 00:22:56,210 --> 00:22:58,920 >> तो क्या वास्तव में हो रहा है इस तस्वीर के मामले में? 526 00:22:58,920 --> 00:23:01,790 खैर, मुख्य कॉल foo है, यह स्मृति का एक टुकड़ा हो जाता है. 527 00:23:01,790 --> 00:23:04,150 Foo foo कहता है, यह हो जाता है स्मृति का एक टुकड़ा. 528 00:23:04,150 --> 00:23:06,430 Foo foo कहता है, यह एक टुकड़ा हो जाता है. 529 00:23:06,430 --> 00:23:07,080 यह एक टुकड़ा हो जाता है. 530 00:23:07,080 --> 00:23:08,120 यह एक टुकड़ा हो जाता है. 531 00:23:08,120 --> 00:23:09,460 Foo लौट कभी नहीं रहा है. 532 00:23:09,460 --> 00:23:12,160 हम उन में से एक को मिटा कभी नहीं रहे ढेर से तख्ते. 533 00:23:12,160 --> 00:23:15,930 तो हम ढेर के माध्यम से नहीं उड़ा रहे क्या किसी और कौन जानता है उल्लेख है, और करने के लिए 534 00:23:15,930 --> 00:23:19,600 हम हमारे की सीमा के अतिक्रमण कर रहे हैं स्मृति के खंड तथाकथित. 535 00:23:19,600 --> 00:23:21,790 त्रुटि जायें विभाजन झूठे. 536 00:23:21,790 --> 00:23:24,110 >> तो समाधान है स्पष्ट रूप से यह मत करो. 537 00:23:24,110 --> 00:23:28,830 लेकिन बड़ा निहितार्थ, हाँ, यह है बिल्कुल कुछ सीमा नहीं है 538 00:23:28,830 --> 00:23:32,470 यह अच्छी तरह से करने के लिए, परिभाषित नहीं है, भले ही कैसे तुम एक में फोन कर सकते हैं कई कार्य 539 00:23:32,470 --> 00:23:34,970 कार्यक्रम, कितनी बार एक समारोह खुद को कॉल कर सकते हैं. 540 00:23:34,970 --> 00:23:38,430 हम उपदेश प्रत्यावर्तन किया तो फिर भी इस संभावित जादुई बात एक के रूप में 541 00:23:38,430 --> 00:23:41,870 सिग्मा के लिए सप्ताह पहले की जोड़ी समारोह, और हम डेटा प्राप्त जब 542 00:23:41,870 --> 00:23:45,270 संरचनाओं और CS50, आप अन्य देखेंगे इसके लिए आवेदन, यह नहीं है 543 00:23:45,270 --> 00:23:46,500 जरूरी सबसे अच्छी बात. 544 00:23:46,500 --> 00:23:50,070 एक समारोह में खुद को कहता है क्योंकि अगर, एक आधार नहीं है, भले ही कॉल 545 00:23:50,070 --> 00:23:54,860 मामला है, आप उस आधार मामले को मारा नहीं है अगर 1,000 कॉल या 10,000 कॉल, द्वारा लिए 546 00:23:54,860 --> 00:23:58,800 आप कमरे से बाहर चला गया हो सकता है कि समय अपनी तथाकथित ढेर और हिट पर 547 00:23:58,800 --> 00:24:00,400 स्मृति के कुछ अन्य क्षेत्रों. 548 00:24:00,400 --> 00:24:03,950 तो यह भी एक डिजाइन व्यापार बंद है लालित्य के बीच और के बीच 549 00:24:03,950 --> 00:24:06,920 अपने विशेष की मजबूती कार्यान्वयन. 550 00:24:06,920 --> 00:24:10,780 >> तो एक और नकारात्मक पक्ष या वहाँ हम है क्या करने के लिए एक और पकड़ लिया 551 00:24:10,780 --> 00:24:11,720 इस प्रकार अब तक कर दिया गया. 552 00:24:11,720 --> 00:24:12,980 मैं getstring कहा जाता है - 553 00:24:12,980 --> 00:24:15,120 मुझे नमस्कार -2 में वापस चलते हैं. 554 00:24:15,120 --> 00:24:18,170 , मैं getstring बुला रहा हूँ कि नोटिस एक पते लौट रहा है. 555 00:24:18,170 --> 00:24:20,730 और हम आज दावा है कि पता ढेर से है. 556 00:24:20,730 --> 00:24:24,480 और अब मैं बाहर मुद्रण कर रहा हूँ उस पते पर स्ट्रिंग. 557 00:24:24,480 --> 00:24:27,000 लेकिन हम कभी नहीं बुलाया गया है getstring के विपरीत. 558 00:24:27,000 --> 00:24:30,850 हम जैसे एक समारोह CALLL के लिए कभी नहीं किया है ungetstring, आप वापस हाथ जहां 559 00:24:30,850 --> 00:24:31,610 कि स्मृति. 560 00:24:31,610 --> 00:24:33,250 लेकिन स्पष्ट है कि हम शायद होना चाहिए था. 561 00:24:33,250 --> 00:24:37,390 क्योंकि हम कंप्यूटर पूछते रहते अगर स्मृति के लिए, की तरह किसी के माध्यम से 562 00:24:37,390 --> 00:24:40,830 निश्चित रूप से, getstring लेकिन कभी इसे वापस दे वह भी करने के लिए नेतृत्व करने के लिए बाध्य है 563 00:24:40,830 --> 00:24:42,970 समस्याओं जिससे हम स्मृति से बाहर चला. 564 00:24:42,970 --> 00:24:46,140 >> और वास्तव में, हम इन के लिए देख सकते हैं जिसका उपयोग नए उपकरण के साथ समस्याओं 565 00:24:46,140 --> 00:24:47,640 टाइप करने के लिए एक छोटे से गुप्त है. 566 00:24:47,640 --> 00:24:50,960 लेकिन मुझे आगे जाना है और यह ऊपर छप जाने बस एक पल में स्क्रीन पर. 567 00:24:50,960 --> 00:24:56,940 मुझे आगे जाना है और वेलग्रिंड चलाने के लिए जा रहा हूँ जिसका पहला आदेश पैरामीटर के साथ 568 00:24:56,940 --> 00:25:00,260 लाइन तर्क का नाम है उस कार्यक्रम का नमस्कार-2. 569 00:25:00,260 --> 00:25:02,650 और दुर्भाग्य से यह है उत्पादन atrociously है 570 00:25:02,650 --> 00:25:04,290 कोई अच्छा कारण के लिए जटिल. 571 00:25:04,290 --> 00:25:06,280 इसलिए हम सब गड़बड़ है कि देखते हैं. 572 00:25:06,280 --> 00:25:07,530 डेविड मेरा नाम राज्य है. 573 00:25:07,530 --> 00:25:09,760 तो उस प्रोग्राम की वास्तव में चल रहा है. 574 00:25:09,760 --> 00:25:11,180 और अब हम इस उत्पादन मिलता है. 575 00:25:11,180 --> 00:25:13,400 >> तो वेलग्रिंड समान है GDB को आत्मा में. 576 00:25:13,400 --> 00:25:14,950 यह एक डिबगर से प्रति नहीं है. 577 00:25:14,950 --> 00:25:16,270 लेकिन यह एक स्मृति चेकर है. 578 00:25:16,270 --> 00:25:20,140 यह चलेगा कि एक कार्यक्रम है आपकी कार्यक्रम और आप एक से पूछा यदि आप बताओ 579 00:25:20,140 --> 00:25:23,860 कंप्यूटर स्मृति के लिए और हाथ कभी नहीं पीठ, जिससे आप जिसका अर्थ है कि 580 00:25:23,860 --> 00:25:24,570 एक स्मृति रिसाव. 581 00:25:24,570 --> 00:25:26,240 और स्मृति लीक खराब हो जाते हैं. 582 00:25:26,240 --> 00:25:29,120 और अगर आप कंप्यूटर के उपयोगकर्ताओं है शायद तुम हो, चाहे यह महसूस किया एक 583 00:25:29,120 --> 00:25:30,300 मैक या पीसी. 584 00:25:30,300 --> 00:25:33,730 आप कभी भी अपने कंप्यूटर के लिए इस्तेमाल किया है और कई में rebooted नहीं है, जबकि 585 00:25:33,730 --> 00:25:36,820 दिन, या आप बस का एक बहुत कुछ मिल गया है कार्यक्रमों चल रहा है, और लानत बात 586 00:25:36,820 --> 00:25:42,360 एक पीस को रोकने के लिए धीमा कर देती है, या कम से कम यह उपयोग करने के लिए सुपर कष्टप्रद है क्योंकि 587 00:25:42,360 --> 00:25:44,350 सब कुछ सिर्फ सुपर धीमी गति से मिला. 588 00:25:44,350 --> 00:25:46,260 >> अब जब कि कारणों से किसी भी संख्या हो सकती है. 589 00:25:46,260 --> 00:25:49,600 यह एक अनंत लूप में एक बग हो सकता है किसी का कोड, या, अधिक बस, यह 590 00:25:49,600 --> 00:25:53,250 आप अधिक उपयोग कर रहे हैं मतलब हो सकता है से स्मृति, या करने की कोशिश कर, अपने 591 00:25:53,250 --> 00:25:54,920 कंप्यूटर वास्तव में है. 592 00:25:54,920 --> 00:25:57,770 और शायद एक बग कुछ कार्यक्रम में नहीं है कि स्मृति के लिए पूछते रहते हैं. 593 00:25:57,770 --> 00:26:02,480 साल के लिए ब्राउज़र के लिए कुख्यात थे यह अधिक से अधिक स्मृति के लिए पूछ 594 00:26:02,480 --> 00:26:03,870 लेकिन यह वापस सौंपने कभी नहीं. 595 00:26:03,870 --> 00:26:07,220 निश्चित रूप से, आप केवल एक सीमित है अगर स्मृति की राशि, आप पूछ सकते हैं ' 596 00:26:07,220 --> 00:26:09,990 असीम रूप से कई बार के लिए कि स्मृति के कुछ. 597 00:26:09,990 --> 00:26:13,070 >> और इसलिए तुम यहाँ क्या देख, भले ही फिर वेलग्रिंड का उत्पादन है 598 00:26:13,070 --> 00:26:17,490 पर नज़र अनावश्यक रूप से जटिल पहला, यह दिलचस्प हिस्सा है. 599 00:26:17,490 --> 00:26:18,890 ढेर - 600 00:26:18,890 --> 00:26:20,060 बाहर निकलने पर उपयोग में. 601 00:26:20,060 --> 00:26:22,810 यहाँ तो बहुत स्मृति कैसे था पर ढेर में उपयोग में 602 00:26:22,810 --> 00:26:24,300 मेरे प्रोग्राम से बाहर निकल गया समय - 603 00:26:24,300 --> 00:26:27,280 एक ब्लॉक में जाहिरा तौर पर छह बाइट्स. 604 00:26:27,280 --> 00:26:28,710 इसलिए मैं अपने हाथ की लहर के लिए जा रहा हूँ क्या में एक ब्लॉक है. 605 00:26:28,710 --> 00:26:31,270 इससे लगता है कि सिर्फ एक हिस्सा है, एक अधिक हिस्सा के लिए तकनीकी शब्द. 606 00:26:31,270 --> 00:26:33,140 लेकिन छह बैट - 607 00:26:33,140 --> 00:26:36,870 कि छह बाइट्स क्या हैं अभी भी प्रयोग में थे? 608 00:26:36,870 --> 00:26:37,390 >> बिल्कुल सही. 609 00:26:37,390 --> 00:26:41,520 डी ए वी आई डी बैकस्लैश शून्य, पाँच पत्र अशक्त टर्मिनेटर प्लस नाम है. 610 00:26:41,520 --> 00:26:46,350 इसलिए इस कार्यक्रम वेलग्रिंड देखा कि मैं जाहिर है, से, छह बाइट्स के लिए कहा 611 00:26:46,350 --> 00:26:48,950 getstring का रास्ता है, लेकिन कभी नहीं उन्हें वापस दे दी. 612 00:26:48,950 --> 00:26:52,030 और वास्तव में, यह तो हो नहीं सकता स्पष्ट अपने कार्यक्रम तीन नहीं है अगर 613 00:26:52,030 --> 00:26:53,590 लाइनों, लेकिन यह 300 लाइनों है. 614 00:26:53,590 --> 00:26:56,920 इसलिए हम वास्तव में एक और आदेश दे सकते हैं लाइन तर्क को वेलग्रिंड के लिए 615 00:26:56,920 --> 00:26:58,290 यह अधिक वाचाल बना. 616 00:26:58,290 --> 00:26:59,760 यह याद करने के लिए एक छोटे से परेशान है. 617 00:26:59,760 --> 00:27:01,580 लेकिन अगर मैं ऐसा - 618 00:27:01,580 --> 00:27:01,930 चलो देखते हैं. 619 00:27:01,930 --> 00:27:03,540 लीक - 620 00:27:03,540 --> 00:27:05,030 यह रिसाव था - 621 00:27:05,030 --> 00:27:07,580 यहां तक ​​कि मुझे याद नहीं है यह हाथ से दूर है क्या. 622 00:27:07,580 --> 00:27:08,550 >> - रिसाव की जांच पूरी होती है. 623 00:27:08,550 --> 00:27:10,180 हाँ, धन्यवाद. 624 00:27:10,180 --> 00:27:12,520 - रिसाव की जांच पूरी होती है. 625 00:27:12,520 --> 00:27:13,800 दर्ज करें. 626 00:27:13,800 --> 00:27:14,940 एक ही कार्यक्रम चल रहा है. 627 00:27:14,940 --> 00:27:16,180 फिर दाऊद में टाइप करें. 628 00:27:16,180 --> 00:27:17,660 अब मैं थोड़ा और विस्तार से देखते हैं. 629 00:27:17,660 --> 00:27:20,890 लेकिन ढेर सार नीचे, जो चार के समान है - आह, 630 00:27:20,890 --> 00:27:22,120 इस तरह की अच्छी है. 631 00:27:22,120 --> 00:27:25,460 अब वेलग्रिंड वास्तव में देख रहा है थोड़ा कठिन मेरे कोड में. 632 00:27:25,460 --> 00:27:29,580 और यह जाहिर है, कि कह रहा है लाइन पर malloc - 633 00:27:29,580 --> 00:27:30,580 हम बाहर ज़ूम. 634 00:27:30,580 --> 00:27:31,980 लाइन पर - 635 00:27:31,980 --> 00:27:32,930 हम यह क्या है लाइन नहीं दिख रहा है. 636 00:27:32,930 --> 00:27:35,110 लेकिन malloc पहले अपराधी है. 637 00:27:35,110 --> 00:27:38,630 Malloc में एक ब्लॉग है. 638 00:27:38,630 --> 00:27:39,810 >> सब ठीक है? 639 00:27:39,810 --> 00:27:40,450 ठीक है, नहीं. 640 00:27:40,450 --> 00:27:40,940 है ना? 641 00:27:40,940 --> 00:27:42,520 मैं getstring कहा जाता है. 642 00:27:42,520 --> 00:27:44,460 getstring जाहिरा तौर पर malloc कॉल. 643 00:27:44,460 --> 00:27:47,800 तो कोड की क्या लाइन जाहिरा तौर पर है होने के लिए दोषी 644 00:27:47,800 --> 00:27:49,050 इस स्मृति आवंटित? 645 00:27:49,050 --> 00:27:51,560 646 00:27:51,560 --> 00:27:55,540 की जो कोई भी malloc लिखा मान लेते हैं कि काफी देर तक यह है कि आसपास किया गया है 647 00:27:55,540 --> 00:27:56,390 उनकी गलती नहीं. 648 00:27:56,390 --> 00:27:57,520 तो यह शायद मेरा है. 649 00:27:57,520 --> 00:28:02,000 cs50.c में getstring - इसलिए कि एक है कहीं कंप्यूटर पर फाइल - 650 00:28:02,000 --> 00:28:05,210 लाइन 286 में दोषी हो रहा है. 651 00:28:05,210 --> 00:28:08,140 अब जब कि CS50 किया गया है की कल्पना करते हैं चारों ओर सभ्य समय की राशि है, तो के लिए 652 00:28:08,140 --> 00:28:09,720 हम भी अचूक हैं. 653 00:28:09,720 --> 00:28:14,080 और इसलिए यह getstring में शायद नहीं है बग निहित है, बल्कि में कि 654 00:28:14,080 --> 00:28:17,810 नमस्ते 2.c लाइन 18. 655 00:28:17,810 --> 00:28:20,670 >> तो चलो पर एक नज़र रखना क्या है कि लाइन 18 थी. 656 00:28:20,670 --> 00:28:21,130 ओह. 657 00:28:21,130 --> 00:28:27,130 किसी तरह से इस लाइन जरूरी नहीं है छोटी गाड़ी, दर असल, लेकिन यह कारण है 658 00:28:27,130 --> 00:28:28,630 कि स्मृति रिसाव के पीछे. 659 00:28:28,630 --> 00:28:32,140 तो सुपर बस, क्या intuitively होगा यहाँ समाधान हो सकता है? 660 00:28:32,140 --> 00:28:34,710 हम स्मृति के लिए पूछ रहे हैं, तो कभी नहीं थे यह वापस दे रही है और कहा कि एक हो रहा है 661 00:28:34,710 --> 00:28:37,940 समस्या है क्योंकि समय के साथ मेरा कंप्यूटर स्मृति से बाहर चला सकता है, धीमी गति से हो सकता है 662 00:28:37,940 --> 00:28:42,110 नीचे, बुरी बातें हो सकता है, अच्छी तरह से, सरल सहज ज्ञान युक्त समाधान क्या है? 663 00:28:42,110 --> 00:28:43,140 बस इसे वापस दे. 664 00:28:43,140 --> 00:28:44,770 >> आप कैसे है कि स्मृति को मुक्त करते हैं? 665 00:28:44,770 --> 00:28:49,970 खैर, शुक्र है यह काफी आसान है सिर्फ मुफ्त के नाम कहने के लिए. 666 00:28:49,970 --> 00:28:51,260 और हम इस से पहले कभी नहीं किया है. 667 00:28:51,260 --> 00:28:55,890 लेकिन आप अनिवार्य रूप से के बारे में सोच सकते हैं malloc के विपरीत के रूप में मुफ्त. 668 00:28:55,890 --> 00:28:58,030 मुफ्त के विपरीत है आवंटन स्मृति. 669 00:28:58,030 --> 00:28:59,540 तो अब मुझे इस recompile करते हैं. 670 00:28:59,540 --> 00:29:02,050 हैलो -2 बनाओ. 671 00:29:02,050 --> 00:29:04,620 मुझे फिर से इसे चलाते हैं. हैलो -2 डेविड. 672 00:29:04,620 --> 00:29:07,290 तो इसमें काम करने लगता है ठीक उसी तरह. 673 00:29:07,290 --> 00:29:11,180 लेकिन मैं वापस वेलग्रिंड के लिए जाना और फिर से चलाने अगर मेरे नव पर है कि एक ही आदेश 674 00:29:11,180 --> 00:29:14,720 संकलित कार्यक्रम, टाइपिंग मेरे नाम से पहले के रूप में - 675 00:29:14,720 --> 00:29:15,370 अच्छा. 676 00:29:15,370 --> 00:29:16,760 ढेर सार - 677 00:29:16,760 --> 00:29:17,740 बाहर निकलने पर उपयोग में - 678 00:29:17,740 --> 00:29:19,370 शून्य ब्लॉकों में शून्य बाइट्स. 679 00:29:19,370 --> 00:29:21,840 और यह सब, सुपर अच्छा है ढेर ब्लॉकों मुक्त कर दिया गया. 680 00:29:21,840 --> 00:29:23,480 कोई लीक संभव हो रहे हैं. 681 00:29:23,480 --> 00:29:27,200 >> तो आ रहा है, नहीं समस्या सेट 4 के साथ, लेकिन समस्या सेट 5, फोरेंसिक साथ 682 00:29:27,200 --> 00:29:30,740 और आगे, यह भी एक बन जाएगा की शुद्धता के उपाय आपके 683 00:29:30,740 --> 00:29:33,630 तुम्हारे पास क्या है या नहीं कार्यक्रम, या स्मृति लीक नहीं है. 684 00:29:33,630 --> 00:29:36,900 लेकिन शुक्र है, न केवल आप कारण कर सकते हैं उन के माध्यम से intuitively, जो 685 00:29:36,900 --> 00:29:40,430 छोटे कार्यक्रमों के लिए आसान है, यकीनन, है लेकिन बड़े कार्यक्रमों के लिए कठिन है, 686 00:29:40,430 --> 00:29:43,860 वेलग्रिंड, उन बड़े कार्यक्रमों के लिए, आप की पहचान में मदद कर सकते हैं 687 00:29:43,860 --> 00:29:45,360 विशेष समस्या नहीं है. 688 00:29:45,360 --> 00:29:47,500 >> लेकिन एक अन्य समस्या है कि पैदा हो सकता है. 689 00:29:47,500 --> 00:29:51,245 मुझे है, जो यहां इस फाइल को खोलते हैं, फिर, कुछ हद तक एक सरल उदाहरण. 690 00:29:51,245 --> 00:29:53,760 लेकिन क्या पर ध्यान केंद्रित करते हैं इस कार्यक्रम करता है. 691 00:29:53,760 --> 00:29:55,190 इस memory.c कहा जाता है. 692 00:29:55,190 --> 00:29:58,380 हम में आज बाद में इस पोस्ट करेंगे आज के स्रोत कोड की ज़िप. 693 00:29:58,380 --> 00:30:01,610 और मैं एक समारोह है कि नोटिस तर्क और कोई लेता है कि च 694 00:30:01,610 --> 00:30:02,800 कुछ भी नहीं देता है. 695 00:30:02,800 --> 00:30:07,240 20 लाइन में, मैं जाहिरा तौर पर एक घोषणा कर रहा हूँ एक पूर्णांक के लिए सूचक और यह फोन एक्स. 696 00:30:07,240 --> 00:30:09,570 मैं निर्दिष्ट कर रहा हूँ वापसी है malloc के लिए मूल्य. 697 00:30:09,570 --> 00:30:14,590 और बस स्पष्ट होना करने के लिए, कितने बाइट्स हूँ मैं शायद malloc से वापस हो रही है 698 00:30:14,590 --> 00:30:17,080 इस स्थिति में? 699 00:30:17,080 --> 00:30:18,040 >> शायद 40. 700 00:30:18,040 --> 00:30:18,840 आपको लगता है कि कहां से मिलता है? 701 00:30:18,840 --> 00:30:22,410 ठीक है, तुम एक पूर्णांक अक्सर याद है कि अगर 4 बाइट्स, कम से कम उस में है 702 00:30:22,410 --> 00:30:25,110 उपकरण, 10 से 4 बार स्पष्ट रूप से 40 है. 703 00:30:25,110 --> 00:30:28,920 तो malloc एक पते के लौट रहा है एक स्मृति का हिस्सा और भंडारण कि 704 00:30:28,920 --> 00:30:30,800 एक्स में अंततः पता. 705 00:30:30,800 --> 00:30:32,570 तो स्पष्ट हो, क्या तो क्या हो रहा है? 706 00:30:32,570 --> 00:30:34,990 खैर, मुझे वापस स्विच हमारे यहाँ तस्वीर है. 707 00:30:34,990 --> 00:30:38,150 मुझे बस के नीचे आकर्षित नहीं करते हैं मेरे कंप्यूटर की मेमोरी, मुझे आगे चलते हैं और 708 00:30:38,150 --> 00:30:42,990 पूरी आयत आकर्षित कि मेरे राम के सभी का प्रतिनिधित्व करता है. 709 00:30:42,990 --> 00:30:44,790 >> हम कह देंगे कि ढेर तल पर है. 710 00:30:44,790 --> 00:30:47,010 और एक पाठ खंड में वहाँ गई डेटा. 711 00:30:47,010 --> 00:30:49,880 लेकिन मैं सिर्फ अमूर्त उन लोगों के लिए जा रहा हूँ डॉट, दूरसंचार विभाग डॉट के रूप में अन्य बातों दूर. 712 00:30:49,880 --> 00:30:53,470 मैं सिर्फ यह उल्लेख करने के लिए जा रहा हूँ शीर्ष पर ढेर के रूप में. 713 00:30:53,470 --> 00:30:57,070 और फिर इस तस्वीर के नीचे, मुख्य प्रतिनिधित्व करने के लिए, मैं जा रहा हूँ 714 00:30:57,070 --> 00:30:59,880 यह एक स्लाइस स्मृति देने के लिए ढेर पर. 715 00:30:59,880 --> 00:31:03,150 एफ के लिए, मैं इसे एक टुकड़ा देने जा रहा हूँ ढेर पर स्मृति की. 716 00:31:03,150 --> 00:31:05,140 अब, मैं परामर्श करने के लिए मेरे पास स्रोत कोड फिर से. 717 00:31:05,140 --> 00:31:07,170 मुख्य के लिए स्थानीय चर क्या हैं? 718 00:31:07,170 --> 00:31:10,710 जाहिरा तौर पर कुछ भी नहीं है, इसलिए कि टुकड़ा है के रूप में भी बड़े प्रभावी ढंग से खाली है या नहीं 719 00:31:10,710 --> 00:31:11,600 मैं इसे तैयार किया है. 720 00:31:11,600 --> 00:31:15,730 लेकिन च में, मैं एक स्थानीय चर है, एक्स कहा जाता है. 721 00:31:15,730 --> 00:31:20,410 तो मैं आगे जाना है और च देने जा रहा हूँ यह फोन स्मृति का एक हिस्सा, एक्स. 722 00:31:20,410 --> 00:31:24,680 >> और अब 10 गुना 4 की malloc, तो malloc 40, कि जहां 723 00:31:24,680 --> 00:31:25,430 स्मृति से आ रहा है? 724 00:31:25,430 --> 00:31:27,530 हम एक तस्वीर तैयार नहीं किया है इस तरह से पहले. 725 00:31:27,530 --> 00:31:31,140 लेकिन यह प्रभावी रूप से है कि मान लें यहाँ से आ रही है, तो एक, 726 00:31:31,140 --> 00:31:33,170 दो, तीन, चार, पांच. 727 00:31:33,170 --> 00:31:34,680 और अब मैं इनमें से 40 की जरूरत है. 728 00:31:34,680 --> 00:31:37,540 तो मैं बस डॉट करता हूँ, डॉट, सुझाव देने के लिए डॉट और भी याद है कि वहाँ 729 00:31:37,540 --> 00:31:39,350 वापस ढेर से आ रही. 730 00:31:39,350 --> 00:31:40,710 अब पता क्या है? 731 00:31:40,710 --> 00:31:42,620 चलो अपनी मनमानी चुनने दें हमेशा की तरह पता है - 732 00:31:42,620 --> 00:31:46,310 यह शायद जा रहा है, भले ही Ox123, पूरी तरह से कुछ अलग हो. 733 00:31:46,310 --> 00:31:50,420 उस में पहली बाइट का पता है मैं के लिए malloc पूछ रहा हूँ कि स्मृति. 734 00:31:50,420 --> 00:31:53,630 >> तो संक्षेप में, एक बार लाइन 20 कार्यान्वित, सचमुच क्या है 735 00:31:53,630 --> 00:31:57,170 यहां एक्स के अंदर संग्रहित? 736 00:31:57,170 --> 00:31:58,730 Ox123. 737 00:31:58,730 --> 00:32:00,370 Ox123. 738 00:32:00,370 --> 00:32:01,550 और बैल रसहीन है. 739 00:32:01,550 --> 00:32:03,200 यह बस है यहाँ का मतलब है एक हेक्साडेसिमल संख्या. 740 00:32:03,200 --> 00:32:06,490 लेकिन क्या महत्वपूर्ण है है कि क्या मैं दुकान एक्स, एक स्थानीय चर, जो है. 741 00:32:06,490 --> 00:32:10,260 लेकिन इसकी डेटा प्रकार, फिर, एक पूर्णांक की एक पता है. 742 00:32:10,260 --> 00:32:12,710 खैर, मैं Ox123 स्टोर करने के लिए जा रहा हूँ. 743 00:32:12,710 --> 00:32:16,610 लेकिन फिर, कि एक छोटी सी भी अगर मैं स्क्रॉल, तो अनावश्यक रूप से जटिल 744 00:32:16,610 --> 00:32:21,490 वापस, हम सार यह दूर काफी कर सकते हैं यथोचित और सिर्फ एक्स का कहना है कि एक 745 00:32:21,490 --> 00:32:23,910 स्मृति की है कि हिस्सा करने के लिए सूचक. 746 00:32:23,910 --> 00:32:24,070 >> ठीक है. 747 00:32:24,070 --> 00:32:26,230 हाथ में अब सवाल निम्नलिखित है - 748 00:32:26,230 --> 00:32:29,910 21 लाइन, यह पता चला है, छोटी गाड़ी है. 749 00:32:29,910 --> 00:32:31,160 क्यों? 750 00:32:31,160 --> 00:32:34,890 751 00:32:34,890 --> 00:32:36,930 >> क्षमा करें? 752 00:32:36,930 --> 00:32:38,640 यह जरूरी नहीं है - 753 00:32:38,640 --> 00:32:40,390 एक बार फिर कहना है कि. 754 00:32:40,390 --> 00:32:41,240 खैर, यह मुक्त नहीं करता है. 755 00:32:41,240 --> 00:32:42,350 इसलिए कि दूसरी है लेकिन. 756 00:32:42,350 --> 00:32:45,000 तो विशेष रूप से वहाँ अन्य एक है लेकिन 21 लाइन पर. 757 00:32:45,000 --> 00:32:49,480 758 00:32:49,480 --> 00:32:50,040 >> बिल्कुल सही. 759 00:32:50,040 --> 00:32:54,980 कोड के इस सरल रेखा है सिर्फ एक बफर अतिप्रवाह, एक बफर उग आया. 760 00:32:54,980 --> 00:32:57,050 एक बफर सिर्फ स्मृति का एक हिस्सा मतलब है. 761 00:32:57,050 --> 00:33:01,520 लेकिन स्मृति के उस हिस्सा आकार का है जिसका मतलब है कि 10, 10 पूर्णांकों, अगर हम 762 00:33:01,520 --> 00:33:05,350 वाक्यात्मक चीनी का उपयोग कर इसे में सूचकांक सरणी संकेतन की, वर्ग 763 00:33:05,350 --> 00:33:09,220 कोष्ठक, आप के लिए उपयोग किया एक्स ब्रैकेट 0 एक्स ब्रैकेट 1 एक्स, 764 00:33:09,220 --> 00:33:10,390 ब्रैकेट डॉट, दूरसंचार विभाग, दूरसंचार विभाग. 765 00:33:10,390 --> 00:33:13,270 एक्स ब्रैकेट 9 सबसे बड़ी है. 766 00:33:13,270 --> 00:33:17,680 मैं एक्स ब्रैकेट 10 करते हैं, जहां तो मैं वास्तव में स्मृति में जा रहा हूँ? 767 00:33:17,680 --> 00:33:19,120 >> खैर, मैं 10 INT है - 768 00:33:19,120 --> 00:33:21,070 वास्तव में सभी आकर्षित यहाँ बाहर इन की. 769 00:33:21,070 --> 00:33:22,700 तो यह है कि पहले पांच था. 770 00:33:22,700 --> 00:33:24,660 यहाँ अन्य पांच ints है. 771 00:33:24,660 --> 00:33:29,580 तो एक्स ब्रैकेट 0 यहाँ है. एक्स ब्रैकेट 1 है यहाँ. एक्स ब्रैकेट 9 यहाँ है. एक्स ब्रैकेट 772 00:33:29,580 --> 00:33:37,960 10 मैं कह रहा हूँ, जिसका मतलब है यहाँ है, 21 लाइन में, कंप्यूटर डाल करने के लिए 773 00:33:37,960 --> 00:33:39,400 नंबर कहां? 774 00:33:39,400 --> 00:33:42,010 संख्या 0 कहां? 775 00:33:42,010 --> 00:33:43,380 खैर, यह हाँ, 0 है. 776 00:33:43,380 --> 00:33:45,460 लेकिन सिर्फ इस तथ्य है कि अपने 0 एक संयोग की तरह है. 777 00:33:45,460 --> 00:33:47,140 यह नंबर हो सकता है 50, सभी के लिए हम परवाह. 778 00:33:47,140 --> 00:33:50,480 लेकिन हम एक्स ब्रैकेट में डालने की कोशिश कर रहे हैं जहां यह है जो 10, 779 00:33:50,480 --> 00:33:53,700 प्रश्न चिह्न, तैयार की है जो एक अच्छी बात नहीं है. 780 00:33:53,700 --> 00:33:57,070 इस कार्यक्रम बहुत अच्छी तरह से हो सकता है नतीजतन दुर्घटना. 781 00:33:57,070 --> 00:33:59,400 >> अब, चलो आगे चलते हैं और देखते हैं कि यह अगर , वास्तव में, क्या होता है. 782 00:33:59,400 --> 00:34:02,600 फ़ाइल के बाद, स्मृति बनाओ memory.c कहा जाता है. 783 00:34:02,600 --> 00:34:05,950 आगे जाने के लिए और चलाते हैं कार्यक्रम स्मृति. 784 00:34:05,950 --> 00:34:08,239 इसलिए हम वास्तव में, यह भाग्यशाली लगता मिला. 785 00:34:08,239 --> 00:34:09,340 हम भाग्यशाली है. 786 00:34:09,340 --> 00:34:11,060 लेकिन हम अब वेलग्रिंड चलाते हैं तो चलो देखते हैं. 787 00:34:11,060 --> 00:34:14,170 पहली नज़र में, मेरे कार्यक्रम हो सकता है पूरी तरह से सही होने लगते हैं. 788 00:34:14,170 --> 00:34:18,010 लेकिन मेरे साथ वेलग्रिंड चलाते हैं - रिसाव की जांच स्मृति पर पूर्ण बराबर होती है. 789 00:34:18,010 --> 00:34:20,110 >> और अब मैं इस चलाते समय - 790 00:34:20,110 --> 00:34:21,030 दिलचस्प. 791 00:34:21,030 --> 00:34:26,800 आकार 4 से अमान्य लिखने पर memory.c की रेखा 21. 792 00:34:26,800 --> 00:34:29,284 Memory.c की लाइन 21 कौन सा है? 793 00:34:29,284 --> 00:34:30,340 ओह, दिलचस्प. 794 00:34:30,340 --> 00:34:31,080 लेकिन रुकिए. 795 00:34:31,080 --> 00:34:32,389 साइज 4, क्या की बात कर रहा है? 796 00:34:32,389 --> 00:34:34,969 मैं केवल एक ही लिखा था, लेकिन यह आकार 4 की है. 797 00:34:34,969 --> 00:34:36,889 क्यों यह 4 है? 798 00:34:36,889 --> 00:34:39,280 यह एक पूर्णांक है, क्योंकि यह है जो है, फिर से, चार बाइट्स. 799 00:34:39,280 --> 00:34:42,510 तो वेलग्रिंड, कि मैं एक बग मिला मेरे कोड पर glancing, नहीं किया था. 800 00:34:42,510 --> 00:34:45,040 और शायद अपने TF या नहीं होगा. 801 00:34:45,040 --> 00:34:48,469 लेकिन क्या वेलग्रिंड सुनिश्चित करने के लिए कि पाया हम भी, वहाँ एक गलती की है 802 00:34:48,469 --> 00:34:52,719 हम कंप्यूटर भाग्यशाली है, और यद्यपि फैसला किया है, हां, मैं दुर्घटना के लिए नहीं जा रहा हूँ 803 00:34:52,719 --> 00:34:57,470 आप एक बाइट, एक छुआ सिर्फ इसलिए तुम नहीं किया है कि स्मृति की INT की कीमत 804 00:34:57,470 --> 00:34:58,550 वास्तव में ही. 805 00:34:58,550 --> 00:35:00,380 >> वैसे, यहाँ छोटी गाड़ी और क्या है. 806 00:35:00,380 --> 00:35:01,180 पता - 807 00:35:01,180 --> 00:35:03,190 यह एक पागल देख पता है हेक्साडेसिमल में. 808 00:35:03,190 --> 00:35:06,890 वह सिर्फ है कहीं ढेर में इसका मतलब है शून्य बाइट आकार 40 के एक ब्लॉक के बाद 809 00:35:06,890 --> 00:35:07,620 आवंटित किया गया है. 810 00:35:07,620 --> 00:35:10,610 मुझे यहाँ से बाहर ज़ूम और अगर देखना इस एक छोटे से अधिक उपयोगी है. 811 00:35:10,610 --> 00:35:11,410 दिलचस्प है. 812 00:35:11,410 --> 00:35:15,600 40 बाइट्स निश्चित रूप से खो रहे हैं 1 की हानि रिकॉर्ड 1 में. 813 00:35:15,600 --> 00:35:17,840 फिर से, अधिक से अधिक शब्दों को यहाँ उपयोगी है. 814 00:35:17,840 --> 00:35:21,350 लेकिन, पर प्रकाश डाला तर्ज पर आधारित जहां मैं शायद ध्यान केंद्रित करना चाहिए मेरी 815 00:35:21,350 --> 00:35:24,070 एक और बग के लिए ध्यान? 816 00:35:24,070 --> 00:35:26,570 Memory.c की एक लाइन 20 की तरह लग रहा है. 817 00:35:26,570 --> 00:35:30,990 >> हम वापस पंक्ति 20 के पास जाओ तो, अगर वह है एक तुम पहले की पहचान की है. 818 00:35:30,990 --> 00:35:33,030 और यह जरूरी छोटी गाड़ी नहीं है. 819 00:35:33,030 --> 00:35:35,160 लेकिन हम यह इसके प्रभाव को उलट दिया है. 820 00:35:35,160 --> 00:35:38,790 तो कैसे मैं सही है कम से कम उन गलतियों में से एक? 821 00:35:38,790 --> 00:35:42,240 मैं रेखा 21 के बाद क्या कर सकता है? 822 00:35:42,240 --> 00:35:47,110 मैं इतना है, एक्स से मुक्त कर सकता है कि स्मृति वापस देने के लिए. 823 00:35:47,110 --> 00:35:49,230 और मैं इस बग कैसे तय करते हैं? 824 00:35:49,230 --> 00:35:52,120 मैं निश्चित रूप से जाना चाहिए कोई आगे 0 से. 825 00:35:52,120 --> 00:35:53,670 इसलिए मुझे कोशिश करते हैं और इस को फिर से चलाने. 826 00:35:53,670 --> 00:35:56,080 क्षमा करें, निश्चित रूप से जाना कोई आगे 9 से. 827 00:35:56,080 --> 00:35:57,510 स्मृति बनाओ. 828 00:35:57,510 --> 00:36:00,650 मुझे वेलग्रिंड फिर से दौड़ना दो. एक बड़ी खिड़की में. 829 00:36:00,650 --> 00:36:01,580 और अब देखो. 830 00:36:01,580 --> 00:36:02,250 नाइस. 831 00:36:02,250 --> 00:36:03,270 सभी ढेर ब्लॉक मुक्त कर दिया गया. 832 00:36:03,270 --> 00:36:04,270 कोई लीक संभव हो रहे हैं. 833 00:36:04,270 --> 00:36:07,520 और यहाँ ऊपर, कोई जिक्र नहीं है अवैध अधिकार के किसी भी अधिक. 834 00:36:07,520 --> 00:36:09,820 >> सिर्फ लालची हो, और चलो करने के लिए देखते हैं अगर एक और प्रदर्शन 835 00:36:09,820 --> 00:36:11,050 उद्देश्य के रूप में जाना नहीं है - 836 00:36:11,050 --> 00:36:12,560 मैं एक पल पहले भाग्यशाली मिला. 837 00:36:12,560 --> 00:36:15,530 और इस 0 तथ्य यह है कि शायद है अनावश्यक रूप से भ्रामक. 838 00:36:15,530 --> 00:36:20,650 चलो बस एक कुछ मनमाना, 50 करने दो. संख्या, स्मृति डॉट स्लेश स्मृति बनाने के लिए - 839 00:36:20,650 --> 00:36:21,410 अभी भी भाग्यशाली हो. 840 00:36:21,410 --> 00:36:22,510 कुछ भी नहीं दुर्घटनाग्रस्त है. 841 00:36:22,510 --> 00:36:26,150 मैं सिर्फ सच में कुछ करना मान लीजिए मूर्ख, और मैं 100 से करते हैं. 842 00:36:26,150 --> 00:36:30,360 मुझे स्मृति रीमेक चलो, डॉट स्मृति स्लैश - 843 00:36:30,360 --> 00:36:31,075 फिर भाग्यशाली है. 844 00:36:31,075 --> 00:36:32,800 कैसे 1000 के बारे में? 845 00:36:32,800 --> 00:36:35,370 ints से परे है, मोटे तौर पर, मैं जहां होना चाहिए? 846 00:36:35,370 --> 00:36:37,410 स्मृति बनाओ - 847 00:36:37,410 --> 00:36:38,570 अरे. 848 00:36:38,570 --> 00:36:39,920 >> [हंसी] 849 00:36:39,920 --> 00:36:41,270 >> ठीक है. 850 00:36:41,270 --> 00:36:43,920 अब और नहीं गंदगी के चारों ओर चलो. 851 00:36:43,920 --> 00:36:45,120 फिर से दौड़ना स्मृति. 852 00:36:45,120 --> 00:36:45,840 हम वहाँ जाते हैं. 853 00:36:45,840 --> 00:36:46,410 ठीक है. 854 00:36:46,410 --> 00:36:52,500 तो जाहिर है आप सूचकांक 100,000 ints जहां परे आप में होना चाहिए था 855 00:36:52,500 --> 00:36:54,410 स्मृति, बुरी बातें होती हैं. 856 00:36:54,410 --> 00:36:56,430 तो यह स्पष्ट रूप से नहीं है एक कठिन, नियम. 857 00:36:56,430 --> 00:36:58,190 मैं एक तरह से परीक्षण का उपयोग कर रहा था और त्रुटि वहाँ पाने के लिए. 858 00:36:58,190 --> 00:37:02,230 लेकिन यह है, लंबी कहानी को कम, क्योंकि आपके कंप्यूटर की मेमोरी भी विभाजित है 859 00:37:02,230 --> 00:37:03,580 इन बातों में खंडों बुलाया. 860 00:37:03,580 --> 00:37:07,260 और कभी कभी, कंप्यूटर वास्तव में यदि आप एक छोटे से अधिक स्मृति दिया गया है 861 00:37:07,260 --> 00:37:08,400 आप के लिए पूछने से. 862 00:37:08,400 --> 00:37:12,170 लेकिन क्षमता के लिए, यह सिर्फ आसान है अधिक स्मृति हो, लेकिन केवल आपको बता 863 00:37:12,170 --> 00:37:13,780 आप इसे का एक हिस्सा हो रही है. 864 00:37:13,780 --> 00:37:16,370 >> और तुम कभी कभी भाग्यशाली हो, इसलिए, आप को छूने के लिए सक्षम हो सकता है 865 00:37:16,370 --> 00:37:17,795 आप का नहीं है कि स्मृति. 866 00:37:17,795 --> 00:37:21,860 आप कोई गारंटी नहीं है कि क्या मूल्य यदि आप वहाँ रहना होगा वहाँ डाल दिया है क्योंकि 867 00:37:21,860 --> 00:37:25,080 कंप्यूटर अभी भी यह नहीं सोचता है कि तुम्हारा है, लेकिन यह जरूरी नहीं जा रहा है 868 00:37:25,080 --> 00:37:29,910 में स्मृति का एक और खंड हिट करने के लिए कंप्यूटर और की तरह एक गलती के लिए प्रेरित 869 00:37:29,910 --> 00:37:31,710 यहाँ यह एक. 870 00:37:31,710 --> 00:37:32,060 ठीक है. 871 00:37:32,060 --> 00:37:37,240 स्मृति पर तो कोई सवाल? 872 00:37:37,240 --> 00:37:37,590 >> ठीक है. 873 00:37:37,590 --> 00:37:40,610 के पर, फिर, यहाँ एक नज़र रखना हम के लिए ले जा रहा हूँ कुछ 874 00:37:40,610 --> 00:37:48,361 काफी कुछ समय के लिए दी गई है, जो इस फाइल में cs50.h. कहा जाता है 875 00:37:48,361 --> 00:37:49,420 तो यह एक फ़ाइल है. 876 00:37:49,420 --> 00:37:51,130 ये सिर्फ एक पूरी गुच्छा रहे हैं के शीर्ष टिप्पणियाँ ऊपर. 877 00:37:51,130 --> 00:37:53,900 और आप इस पर ध्यान दिया है कि अगर आप उपकरण पर आसपास poked. 878 00:37:53,900 --> 00:37:57,000 लेकिन यह पता चला है कि हर समय, हम एक के रूप में स्ट्रिंग का इस्तेमाल करते थे 879 00:37:57,000 --> 00:38:01,130 हम घोषणा की है जिसके द्वारा पर्याय, साधन उस पर्याय इस के साथ था 880 00:38:01,130 --> 00:38:03,990 प्रकार परिभाषा के लिए कीवर्ड typedef,. 881 00:38:03,990 --> 00:38:07,500 और हम अनिवार्य रूप से बनाने, कह रहे हैं स्ट्रिंग चार स्टार के लिए एक पर्याय. 882 00:38:07,500 --> 00:38:11,190 जिसका मतलब है कि द्वारा ढेर के रूप में जाना जाता है इन प्रशिक्षण पहियों बनाया 883 00:38:11,190 --> 00:38:12,040 स्ट्रिंग. 884 00:38:12,040 --> 00:38:14,830 >> अब यहां सिर्फ एक प्रोटोटाइप है getchar के लिए. 885 00:38:14,830 --> 00:38:17,350 हम पहले यह देखा हो सकता है, लेकिन है कि यह करता है वास्तव में क्या. getchar 886 00:38:17,350 --> 00:38:19,070 , कोई तर्क लेता है एक चार देता है. 887 00:38:19,070 --> 00:38:21,340 getdouble तर्क में कोई लेता है, एक डबल देता है. 888 00:38:21,340 --> 00:38:24,440 getfloat कोई बहस नहीं, रिटर्न लेता है एक नाव, और बहुत आगे है. 889 00:38:24,440 --> 00:38:27,270 getint यहां है. getlonglong यहां है. 890 00:38:27,270 --> 00:38:28,820 और getstring यहां है. 891 00:38:28,820 --> 00:38:29,420 और यह बात है. 892 00:38:29,420 --> 00:38:33,080 इस बैंगनी रेखा एक और पूर्वप्रक्रमक है क्योंकि निर्देशक 893 00:38:33,080 --> 00:38:35,550 यह की शुरुआत में हैशटैग. 894 00:38:35,550 --> 00:38:35,870 >> ठीक है. 895 00:38:35,870 --> 00:38:38,380 तो अब मुझे cs50.c. में जाने 896 00:38:38,380 --> 00:38:40,400 और हम इस पर भी लंबे समय से बात नहीं करेंगे. 897 00:38:40,400 --> 00:38:43,280 लेकिन तुम क्या है की एक झलक देने के लिए यह सब चल रहा 898 00:38:43,280 --> 00:38:46,434 समय, मेरे लिए चलते हैं - 899 00:38:46,434 --> 00:38:48,250 के getchar करते हैं. 900 00:38:48,250 --> 00:38:51,050 तो getchar ज्यादातर टिप्पणियां है. 901 00:38:51,050 --> 00:38:52,060 लेकिन यह इस तरह दिखता है. 902 00:38:52,060 --> 00:38:54,800 तो यह वास्तविक समारोह है हम किया गया है कि getchar 903 00:38:54,800 --> 00:38:56,055 के लिए दी लेने से मौजूद है. 904 00:38:56,055 --> 00:38:59,370 और हम यह एक का उपयोग नहीं किया है फिर भी अगर कभी कि अक्सर, यह कम से कम है 905 00:38:59,370 --> 00:39:00,470 अपेक्षाकृत सरल. 906 00:39:00,470 --> 00:39:02,580 तो यह लेने लायक है एक यहां पर त्वरित देखो. 907 00:39:02,580 --> 00:39:06,540 >> तो getchar, एक अनंत लूप है जान - बूझकर तो जाहिरा तौर पर. 908 00:39:06,540 --> 00:39:10,050 यह तो कहता है - और यह एक की तरह है कोड का अच्छा पुन: उपयोग खुद लिखा है हम. 909 00:39:10,050 --> 00:39:11,220 यह getstring कहता है. 910 00:39:11,220 --> 00:39:12,460 यह क्या करता है क्योंकि एक चार पाने के लिए क्या मतलब है? 911 00:39:12,460 --> 00:39:14,730 खैर, आप के रूप में अच्छी तरह से प्राप्त करने के लिए कोशिश कर सकते हैं एक पूरे उपयोगकर्ता से पाठ की लाइन और 912 00:39:14,730 --> 00:39:16,940 तो सिर्फ एक को देखो उन पात्रों की. 913 00:39:16,940 --> 00:39:19,170 लाइन 60 में, यहाँ एक छोटी है एक मानसिक स्वास्थ्य की जांच के सा. 914 00:39:19,170 --> 00:39:21,610 Getstring अशक्त लौटे, तो के आगे नहीं करते हैं. 915 00:39:21,610 --> 00:39:22,820 कुछ गलत हो गया. 916 00:39:22,820 --> 00:39:28,120 >> अब यह कुछ हद तक कष्टप्रद है, लेकिन है सी. चार मैक्स में पारंपरिक शायद 917 00:39:28,120 --> 00:39:29,960 क्या प्रतिनिधित्व करता है बस अपने नाम के आधार पर? 918 00:39:29,960 --> 00:39:31,670 यह एक निरंतर है. 919 00:39:31,670 --> 00:39:36,040 यह के संख्यात्मक मान की तरह है आप के साथ प्रतिनिधित्व कर सकते हैं सबसे बड़ा चार 920 00:39:36,040 --> 00:39:40,370 शायद संख्या है जो एक काटने, सबसे बड़ी संख्या आप जो 255, 921 00:39:40,370 --> 00:39:42,720 आठ बिट्स का प्रतिनिधित्व करते हैं, शून्य से शुरू. 922 00:39:42,720 --> 00:39:47,460 तो मैं इस समारोह में, इस का उपयोग किया है जब इस कोड लिखने, केवल क्योंकि 923 00:39:47,460 --> 00:39:51,753 कुछ getchar में गलत हो जाता है, लेकिन अगर जीवन में अपने उद्देश्य को वापस जाने के लिए है एक 924 00:39:51,753 --> 00:39:54,830 चार, आप किसी भी तरह सक्षम होने की जरूरत उपयोगकर्ता को संकेत देने के लिए कि 925 00:39:54,830 --> 00:39:55,840 कुछ गलत हो गया. 926 00:39:55,840 --> 00:39:56,970 हम अशक्त नहीं लौट सकते. 927 00:39:56,970 --> 00:39:58,480 यह शून्य एक सूचक है कि पता चला है. 928 00:39:58,480 --> 00:40:01,030 और फिर, getchar है एक चार लौटने के लिए. 929 00:40:01,030 --> 00:40:04,760 >> इसलिए सम्मेलन, कुछ हो जाता है अगर गलत, तुम, प्रोग्रामर, या में है 930 00:40:04,760 --> 00:40:08,160 इस मामले में, मुझे पुस्तकालय के साथ, मैं था एक बस, तो मनमाने ढंग से तय 931 00:40:08,160 --> 00:40:12,230 कुछ गलत हो जाता है, मैं जा रहा हूँ सही मायने में है जो संख्या 255, लौटने 932 00:40:12,230 --> 00:40:17,240 हम, उपयोगकर्ता टाइप नहीं कर सकते हैं नहीं कर सकते हैं इसका मतलब द्वारा प्रतिनिधित्व चरित्र 933 00:40:17,240 --> 00:40:21,410 हम था संख्या 255 है क्योंकि एक यह चोरी करने के लिए एक तथाकथित प्रहरी मूल्य के रूप में 934 00:40:21,410 --> 00:40:23,410 एक समस्या का प्रतिनिधित्व करते हैं. 935 00:40:23,410 --> 00:40:27,010 अब यह चरित्र है कि 255 पता चला है आप पर टाइप कर सकते हैं कुछ नहीं है 936 00:40:27,010 --> 00:40:28,380 अपने कीबोर्ड, तो यह कोई बड़ी बात नहीं है. 937 00:40:28,380 --> 00:40:30,910 उपयोगकर्ता की सूचना नहीं है कि मैं इस चरित्र चुरा लिया है. 938 00:40:30,910 --> 00:40:34,620 लेकिन क्या आपने कभी एक पर मैन पेज में देखते हैं एक करने के लिए कंप्यूटर प्रणाली कुछ संदर्भ 939 00:40:34,620 --> 00:40:38,560 सब कहते हैं कि इस तरह लगातार टोपियां, त्रुटि के मामलों में लगातार हो सकता है में 940 00:40:38,560 --> 00:40:42,720 लौटा दी, कि सब कुछ मानव किया है साल पहले मनमाने ढंग से करने का निर्णय लिया गया था 941 00:40:42,720 --> 00:40:45,680 इस विशेष मूल्य और वापसी मामले में एक निरंतर यह कहते हैं 942 00:40:45,680 --> 00:40:46,840 कुछ गलत हो जाता. 943 00:40:46,840 --> 00:40:48,580 >> अब जादू यहाँ नीचे होता है. 944 00:40:48,580 --> 00:40:52,600 सबसे पहले, मैं लाइन 67 में घोषणा कर रहा हूँ दो वर्ण, सी 1 और सी 2. 945 00:40:52,600 --> 00:40:57,080 और फिर लाइन 68 में, वास्तव में नहीं है की याद ताजा करती है कि कोड की एक पंक्ति 946 00:40:57,080 --> 00:41:01,140 दिए हमारे दोस्त printf, कि यह उद्धरण में प्रतिशत सीएस करता है. 947 00:41:01,140 --> 00:41:06,490 लेकिन यहाँ क्या हो रहा है नोटिस. sscanf स्ट्रिंग स्कैन का अर्थ है - 948 00:41:06,490 --> 00:41:11,690 इसका मतलब है एक स्वरूपित स्कैन स्ट्रिंग, फलस्वरूप sscanf. 949 00:41:11,690 --> 00:41:12,590 इसका क्या मतलब है? 950 00:41:12,590 --> 00:41:16,310 इसे आप एक स्ट्रिंग sscanf को पारित मतलब है. 951 00:41:16,310 --> 00:41:18,420 और रेखा जो कुछ है उपयोगकर्ता प्रकार के अंदर 952 00:41:18,420 --> 00:41:23,520 आप की तरह एक प्रारूप स्ट्रिंग sscanf को पारित इस कर रहे हैं कि क्या scanf बताता है 953 00:41:23,520 --> 00:41:25,870 आप उपयोगकर्ता अंदर टाइप किया गया है उम्मीद कर रहा 954 00:41:25,870 --> 00:41:29,730 तुम तो पास में दो के पते इस मामले में स्मृति का हिस्सा है,, 955 00:41:29,730 --> 00:41:31,150 मैं दो प्लेसहोल्डर है क्योंकि. 956 00:41:31,150 --> 00:41:34,610 इसलिए मैं यह पता देने जा रहा हूँ सी 1 और सी 2 के पते की. 957 00:41:34,610 --> 00:41:37,700 >> और अगर आप एक समारोह दे कि याद कुछ चर का पता, क्या है 958 00:41:37,700 --> 00:41:38,950 निहितार्थ यह है? 959 00:41:38,950 --> 00:41:41,400 960 00:41:41,400 --> 00:41:45,050 उस समारोह एक परिणाम के रूप में क्या कर सकते हैं यह एक का पता देने के 961 00:41:45,050 --> 00:41:48,170 करने का विरोध चर, के रूप में चर ही? 962 00:41:48,170 --> 00:41:49,450 यह सही है, यह बदल सकते हैं? 963 00:41:49,450 --> 00:41:53,250 आप किसी एक शारीरिक के लिए एक नक्शा था पता है, वे वहां जाने के लिए और क्या कर सकते हैं 964 00:41:53,250 --> 00:41:54,750 वे उस पते पर जो भी चाहते हैं. 965 00:41:54,750 --> 00:41:55,800 यहां एक ही विचार है. 966 00:41:55,800 --> 00:41:59,950 हम sscanf को पारित करते हैं, दो के पते स्मृति का हिस्सा है, यहां तक ​​कि इन छोटे 967 00:41:59,950 --> 00:42:03,585 स्मृति, सी 1 और सी 2, लेकिन का थोड़ा हिस्सा हम यह उनमें से पता बताओ, 968 00:42:03,585 --> 00:42:05,170 sscanf इसे बदल सकते हैं. 969 00:42:05,170 --> 00:42:08,530 >> हम पढ़ तो, अगर जीवन में के उद्देश्य sscanf आदमी पृष्ठ, पढ़ने के लिए है क्या 970 00:42:08,530 --> 00:42:13,420 उपयोगकर्ता में टाइप होने उपयोगकर्ता के लिए आशा एक चरित्र में और शायद टाइप किया 971 00:42:13,420 --> 00:42:16,470 एक और चरित्र, और जो कुछ उपयोगकर्ता टाइप, पहली चरित्र चला जाता है 972 00:42:16,470 --> 00:42:19,310 यहाँ, दूसरा चरित्र यहाँ जाता है. 973 00:42:19,310 --> 00:42:22,470 अब, एक अलग रूप में, यह है, और तुम होगा केवल दस्तावेज़ से यह पता है, 974 00:42:22,470 --> 00:42:25,570 मैं वहाँ एक रिक्त स्थान डाल तथ्य यह है कि बस मुझे परवाह नहीं है इसका मतलब है कि अगर 975 00:42:25,570 --> 00:42:28,440 उपयोगकर्ता स्पेस बार कुछ हिट वह या वह एक लेता बार पहले 976 00:42:28,440 --> 00:42:30,400 चरित्र, मैं अनदेखा करने के लिए जा रहा हूँ किसी भी सफेद स्थान. 977 00:42:30,400 --> 00:42:32,510 तो यह है कि, मैं से पता प्रलेखन. 978 00:42:32,510 --> 00:42:36,570 >> एक दूसरे% सी है कि वहाँ तथ्य सफेद अंतरिक्ष के बाद वास्तव में है 979 00:42:36,570 --> 00:42:37,410 जानबूझकर. 980 00:42:37,410 --> 00:42:41,190 मैं पता लगाने में सक्षम होना चाहता हूँ, अगर उपयोगकर्ता बँधा हुआ या सहयोग नहीं किया. 981 00:42:41,190 --> 00:42:45,630 इसलिए मैं उपयोगकर्ता केवल टाइप की उम्मीद कर रहा हूँ एक चरित्र में है, इसलिए मैं उम्मीद कर रहा हूँ 982 00:42:45,630 --> 00:42:50,640 कि sscanf ही वापस जाने के लिए जा रहा है मान 1, क्योंकि फिर, मैंने पढ़ा अगर 983 00:42:50,640 --> 00:42:55,400 प्रलेखन, में sscanf का उद्देश्य जीवन की संख्या पर लौटने के लिए है 984 00:42:55,400 --> 00:42:59,170 भर गया है कि चर उपयोगकर्ता इनपुट के साथ. 985 00:42:59,170 --> 00:43:02,270 >> मैं दो चर में पारित पते, सी 1 और सी 2. 986 00:43:02,270 --> 00:43:06,420 मैं, हालांकि, उम्मीद कर रहा हूँ कि केवल एक का उन्हें मार दिया जाता है क्योंकि अगर sscanf 987 00:43:06,420 --> 00:43:11,130 रिटर्न 2, संभवतः क्या है तार्किक निहितार्थ? 988 00:43:11,130 --> 00:43:14,600 उपयोगकर्ता बस मुझे एक नहीं दिया चरित्र की तरह मैं उसे या उसे बताया. 989 00:43:14,600 --> 00:43:17,860 वे शायद पर टाइप किया कम से कम दो अक्षर. 990 00:43:17,860 --> 00:43:22,430 मैं बजाय दूसरा नहीं था तो अगर % ग, मैं सिर्फ एक था, जो 991 00:43:22,430 --> 00:43:25,370 स्पष्ट रूप से अधिक सहज ज्ञान युक्त होगा दृष्टिकोण, मैं एक पहली नज़र में लगता है, 992 00:43:25,370 --> 00:43:30,220 आप पता लगाने के लिए सक्षम होने के लिए नहीं जा रहे हैं उपयोगकर्ता आप अधिक दे दिया गया है 993 00:43:30,220 --> 00:43:31,780 आप वास्तव में चाहते थे की तुलना में इनपुट. 994 00:43:31,780 --> 00:43:34,100 तो यह एक अंतर्निहित रूप है त्रुटि की जाँच. 995 00:43:34,100 --> 00:43:35,640 >> लेकिन मैं यहाँ क्या कर नोटिस. 996 00:43:35,640 --> 00:43:39,970 मैं उपयोगकर्ता मुझे एक दे दिया है कि यकीन है कि एक बार चरित्र, मैं कर, नया मुफ्त 997 00:43:39,970 --> 00:43:44,450 getstring के विपरीत, जो बारी में malloc का उपयोग करता है, और फिर मैं वापस 998 00:43:44,450 --> 00:43:51,030 सी 1, मैं आशा व्यक्त की कि चरित्र उपयोगकर्ता प्रदान की है और केवल प्रदान की. 999 00:43:51,030 --> 00:43:54,680 तो एक त्वरित केवल झलक, लेकिन getchar पर कोई सवाल? 1000 00:43:54,680 --> 00:43:57,450 1001 00:43:57,450 --> 00:43:59,590 हम वापस दूसरों से कुछ के लिए आया हूँ. 1002 00:43:59,590 --> 00:44:03,770 >> खैर, मुझे आगे जाना है और यह करते हैं - सिर्फ प्रेरित करने के लिए, अब लगता है हमारी 1003 00:44:03,770 --> 00:44:08,910 एक सप्ताह से अधिक समय में चर्चा, इस structs.h एक फ़ाइल कहा जाता है. 1004 00:44:08,910 --> 00:44:11,440 और फिर, यह सिर्फ एक स्वाद है आगे झूठ है कि कुछ की. 1005 00:44:11,440 --> 00:44:13,090 लेकिन सूचना है कि एक बहुत इस टिप्पणी के है. 1006 00:44:13,090 --> 00:44:17,440 इसलिए मुझे प्रकाश डाला ही अब के लिए दिलचस्प हिस्सा. 1007 00:44:17,440 --> 00:44:18,020 typedef - 1008 00:44:18,020 --> 00:44:19,700 कि एक ही कीवर्ड फिर से नहीं है. 1009 00:44:19,700 --> 00:44:23,100 typedef हम स्ट्रिंग घोषित करने के लिए उपयोग एक विशेष डेटा प्रकार के रूप में. 1010 00:44:23,100 --> 00:44:27,490 आप नए ब्रांड बनाने के लिए typedef का उपयोग कर सकते हैं अस्तित्व नहीं था कि डेटा प्रकार जब 1011 00:44:27,490 --> 00:44:28,570 सी आविष्कार किया गया था. 1012 00:44:28,570 --> 00:44:32,520 उदाहरण के लिए, INT सी. चार के साथ आता है सी. डबल सी के साथ आता है, लेकिन साथ आता है 1013 00:44:32,520 --> 00:44:34,000 एक छात्र की कोई धारणा नहीं है. 1014 00:44:34,000 --> 00:44:37,230 और फिर भी यह होना बहुत उपयोगी होगी एक प्रोग्राम लिखने के लिए सक्षम है कि भंडार 1015 00:44:37,230 --> 00:44:40,440 एक चर में, एक छात्र की आईडी नंबर, उनके नाम, और उनके घर. 1016 00:44:40,440 --> 00:44:42,890 दूसरे शब्दों में, तीन टुकड़ों में एक पूर्णांक और एक तरह डेटा, की 1017 00:44:42,890 --> 00:44:44,420 स्ट्रिंग और एक अन्य स्ट्रिंग. 1018 00:44:44,420 --> 00:44:48,220 >> Typedef के साथ, बहुत शक्तिशाली क्या है इस के लिए कीवर्ड sturct के बारे में 1019 00:44:48,220 --> 00:44:53,660 संरचना, आप 2013 में प्रोग्रामर, वास्तव में अपने ही परिभाषित कर सकते हैं 1020 00:44:53,660 --> 00:44:57,530 साल अस्तित्व में नहीं था कि डेटा प्रकार पहले लेकिन है कि सूट अपने उद्देश्यों. 1021 00:44:57,530 --> 00:45:01,910 और तो यहाँ, लाइनों 13 19 के माध्यम से में, हम जैसे, एक नया डेटा प्रकार घोषणा कर रहे हैं 1022 00:45:01,910 --> 00:45:04,320 एक पूर्णांक, लेकिन छात्र बुला. 1023 00:45:04,320 --> 00:45:09,310 और के अंदर यह चर जा रहा है एक पूर्णांक, एक स्ट्रिंग, - तीन बातें हो 1024 00:45:09,310 --> 00:45:09,930 और एक स्ट्रिंग. 1025 00:45:09,930 --> 00:45:13,040 तो आप वास्तव में क्या है के बारे में सोच सकते हैं यह वह जगह है, भले ही यहां हुआ एक 1026 00:45:13,040 --> 00:45:17,160 आज के लिए एक सरलीकरण का सा, एक छात्र अनिवार्य रूप से हो रहा है 1027 00:45:17,160 --> 00:45:19,450 इस तरह देखने के लिए. 1028 00:45:19,450 --> 00:45:22,580 इसका का एक हिस्सा होने जा रहा एक आईडी, एक नाम के साथ स्मृति 1029 00:45:22,580 --> 00:45:25,580 क्षेत्र, और एक घर क्षेत्र. 1030 00:45:25,580 --> 00:45:30,670 और हम उन लोगों के हिस्सा उपयोग करने में सक्षम हो जाएगा स्मृति और के रूप में उन तक पहुँचने. 1031 00:45:30,670 --> 00:45:38,870 >> मैं struct0.c में जाओ, यहाँ है एक अपेक्षाकृत लंबा है, लेकिन अगले एक 1032 00:45:38,870 --> 00:45:42,630 कोड के पैटर्न, कि इस नई चाल का उपयोग करता है. 1033 00:45:42,630 --> 00:45:45,790 तो सबसे पहले, मुझे आपका ध्यान आकर्षित करते हैं शीर्ष ऊपर दिलचस्प भागों के लिए. 1034 00:45:45,790 --> 00:45:49,670 तीव्र छात्रों 3 को परिभाषित करता है, एक वाणी लगातार बुलाया छात्रों और प्रदान 1035 00:45:49,670 --> 00:45:53,450 यह मनमाने ढंग से नंबर 3, बस इसलिए मैं का उपयोग कर तीन छात्रों की है 1036 00:45:53,450 --> 00:45:54,830 अब के लिए इस कार्यक्रम. 1037 00:45:54,830 --> 00:45:55,960 यहाँ मुख्य आता है. 1038 00:45:55,960 --> 00:45:58,860 और नोटिस, कैसे मैं घोषणा करता है छात्रों की एक सरणी? 1039 00:45:58,860 --> 00:46:00,480 खैर, मैं सिर्फ एक ही वाक्य रचना का उपयोग करें. 1040 00:46:00,480 --> 00:46:02,110 शब्द छात्र जाहिर है, नया है. 1041 00:46:02,110 --> 00:46:04,790 लेकिन छात्र, वर्ग, वर्ग के छात्रों के. 1042 00:46:04,790 --> 00:46:06,720 >> तो दुर्भाग्य से एक बहुत कुछ है यहाँ पदों की पुन: उपयोग की. 1043 00:46:06,720 --> 00:46:07,660 यह सिर्फ एक संख्या है. 1044 00:46:07,660 --> 00:46:09,040 तो यह तीन कह की तरह है. 1045 00:46:09,040 --> 00:46:11,430 कक्षा मैं चाहता हूँ बस क्या है चर कॉल करने के लिए. 1046 00:46:11,430 --> 00:46:12,840 मैं छात्रों को यह कह सकते हैं. 1047 00:46:12,840 --> 00:46:15,880 लेकिन वर्ग, यह एक में एक वर्ग नहीं है जिस तरह से वस्तु उन्मुख जावा तरह. 1048 00:46:15,880 --> 00:46:17,220 यह छात्रों के सिर्फ एक वर्ग है. 1049 00:46:17,220 --> 00:46:20,590 और हर तत्व का डेटा प्रकार उस सरणी में छात्र है. 1050 00:46:20,590 --> 00:46:23,040 तो यह एक छोटे से अलग है और कुछ कहने से 1051 00:46:23,040 --> 00:46:25,250 इस तरह, यह सिर्फ है - 1052 00:46:25,250 --> 00:46:29,500 मैं मुझे तीन छात्रों को देने कह रहा हूँ और उस सरणी वर्ग कहते हैं. 1053 00:46:29,500 --> 00:46:29,800 >> ठीक है. 1054 00:46:29,800 --> 00:46:30,680 अब यहाँ एक चार पाश है. 1055 00:46:30,680 --> 00:46:33,480 इस आदमी के परिचित - पुनरावृति तीन तक पर शून्य से. 1056 00:46:33,480 --> 00:46:35,160 और यहाँ वाक्यविन्यास का नया टुकड़ा है. 1057 00:46:35,160 --> 00:46:37,710 कार्यक्रम मुझे संकेत जा रहा है, मानव, यह एक छात्र देने के लिए 1058 00:46:37,710 --> 00:46:39,200 एक पूर्णांक है जो आईडी,. 1059 00:46:39,200 --> 00:46:44,650 और यहाँ आप कर सकते हैं जो साथ वाक्यविन्यास है पर आईडी क्षेत्र में कुछ की दुकान 1060 00:46:44,650 --> 00:46:48,630 स्थान वर्ग ब्रैकेट मैं तो इस वाक्य रचना कोई नई बात नहीं है. 1061 00:46:48,630 --> 00:46:51,450 यह सिर्फ मेरे आठवें देने का मतलब कक्षा में छात्र. 1062 00:46:51,450 --> 00:46:52,940 लेकिन इस प्रतीक नया है. 1063 00:46:52,940 --> 00:46:56,320 अब तक, हम डॉट इस्तेमाल नहीं कर सकता है, इस तरह कोड में कम से कम. 1064 00:46:56,320 --> 00:47:01,490 इस रूप में जाना जाता संरचना के लिए जाने का मतलब एक छात्र और वहाँ कुछ डाल दिया. 1065 00:47:01,490 --> 00:47:05,670 इसी तरह, यह अगली पंक्ति में, 31 जाने आगे और जो कुछ भी उपयोगकर्ता प्रकार डाल 1066 00:47:05,670 --> 00:47:10,530 एक यहां नाम और क्या वे एक के लिए कर के लिए घर, एक ही बात है, आगे बढ़ो और 1067 00:47:10,530 --> 00:47:13,230 . घर में रख दिया. 1068 00:47:13,230 --> 00:47:15,955 >> इसलिए इस कार्यक्रम क्या करता है अंततः क्या है? 1069 00:47:15,955 --> 00:47:17,220 आप वहां एक छोटी सी टीज़र देख सकते हैं. 1070 00:47:17,220 --> 00:47:24,780 मुझे आगे चलते हैं और structs 0 कैसे कर सकता हूँ डॉट, संरचना 0, छात्र की पहचान 1 स्लेश 1071 00:47:24,780 --> 00:47:28,250 डेविड माथर, छात्र आईडी 2 कहना. 1072 00:47:28,250 --> 00:47:32,070 रोब किर्कलैंड, छात्र आईडी 3. 1073 00:47:32,070 --> 00:47:35,010 लॉरेन Leverit - 1074 00:47:35,010 --> 00:47:38,380 और केवल बात यह कार्यक्रम किया था, अभी पूरी तरह से मनमाना है, जो है 1075 00:47:38,380 --> 00:47:40,980 मैं इस डेटा के साथ कुछ करना चाहता था मैं हम कैसे करने के लिए सिखाया गया है कि अब 1076 00:47:40,980 --> 00:47:43,450 structs का उपयोग, मैं सिर्फ पड़ा है यहाँ यह अतिरिक्त पाश. 1077 00:47:43,450 --> 00:47:45,260 मैं छात्रों की सरणी से पुनरावृति. 1078 00:47:45,260 --> 00:47:49,170 मैं हमारे, शायद अब परिचित मित्र का इस्तेमाल किया, स्ट्रिंग stircomp के लिए, की तुलना 1079 00:47:49,170 --> 00:47:53,780 चेक 8 वीं की छात्रा का घर है मैथर के बराबर? 1080 00:47:53,780 --> 00:47:56,760 और अगर ऐसा है, बस कुछ प्रिंट मनमाने ढंग से की तरह, हाँ, यह है. 1081 00:47:56,760 --> 00:47:59,430 लेकिन फिर, बस मुझे अवसर देने का उपयोग करें और पुन: उपयोग करने के लिए 1082 00:47:59,430 --> 00:48:02,270 इस नई डॉट संकेतन पुन: उपयोग. 1083 00:48:02,270 --> 00:48:03,250 >> तो कौन सही, कौन परवाह करता है? 1084 00:48:03,250 --> 00:48:06,270 एक छात्र कार्यक्रम के साथ आ रहा है कुछ मनमाना है, लेकिन यह पता चला है 1085 00:48:06,270 --> 00:48:09,800 हम साथ उपयोगी बातें कर सकते हैं इस उदाहरण के लिए इस प्रकार है. 1086 00:48:09,800 --> 00:48:14,600 यह एक अधिक जटिल संरचना है सी. में यह एक दर्जन या अधिक क्षेत्रों मिल गया है 1087 00:48:14,600 --> 00:48:15,880 कुछ हद तक cryptically नाम दिया है. 1088 00:48:15,880 --> 00:48:20,110 लेकिन क्या आपने कभी एक ग्राफिक्स के बारे में सुना है अगर फ़ाइल स्वरूप कहा जाता बिटमैप, बीएमपी, यह 1089 00:48:20,110 --> 00:48:22,830 पता चला है कि बिटमैप फ़ाइल स्वरूप कि इस तरह बहुत ज्यादा लग रहा है. 1090 00:48:22,830 --> 00:48:24,200 यह एक मूर्ख थोड़ा मुस्कुराता चेहरा है. 1091 00:48:24,200 --> 00:48:27,840 यह मैं में तेजी से बढ़ी है कि एक छोटी सी छवि है मैं प्रत्येक देख सकता था कि इतनी सुंदर बड़ा पर 1092 00:48:27,840 --> 00:48:30,410 व्यक्तिगत डॉट्स या पिक्सल की. 1093 00:48:30,410 --> 00:48:33,800 अब, यह हम एक का प्रतिनिधित्व कर सकते पता चला है संख्या 0, कहते हैं, के साथ काले रंग की बिंदी. 1094 00:48:33,800 --> 00:48:35,520 और नंबर 1 के साथ एक सफेद डॉट. 1095 00:48:35,520 --> 00:48:39,140 >> दूसरे शब्दों में, तो आप आकर्षित करना चाहते हैं तो एक स्माइली एक में है कि छवि का सामना करने और बचाने के 1096 00:48:39,140 --> 00:48:42,680 कंप्यूटर, यह शून्य स्टोर करने के लिए suffices और इस तरह लग रहे है कि लोगों को, जहां, 1097 00:48:42,680 --> 00:48:45,250 फिर, लोगों को सफेद कर रहे हैं और शून्य काले होते हैं. 1098 00:48:45,250 --> 00:48:48,290 और एक साथ, आप प्रभावी है अगर लोगों को और शून्य का एक सशक्त करना, आप एक है 1099 00:48:48,290 --> 00:48:51,030 पिक्सल के ग्रिड, और आप रखना अगर उन्हें बाहर, आप एक प्यारा है 1100 00:48:51,030 --> 00:48:52,560 थोड़ा मुस्कुराता चेहरा. 1101 00:48:52,560 --> 00:48:58,150 अब, बिटमैप फ़ाइल स्वरूप, बीएमपी, है प्रभावी ढंग से, हुड के नीचे है कि 1102 00:48:58,150 --> 00:49:00,970 लेकिन अधिक पिक्सल पियक्कड़ साथ कि आप वास्तव में रंगों का प्रतिनिधित्व कर सकते हैं. 1103 00:49:00,970 --> 00:49:05,170 >> लेकिन यदि आप और अधिक परिष्कृत है जब बीएमपी और JPEG और GIF तरह फ़ाइल स्वरूप 1104 00:49:05,170 --> 00:49:09,360 यदि आप उन परिचित हो सकता है जिसके साथ डिस्क पर फ़ाइलों को आम तौर पर न केवल 1105 00:49:09,360 --> 00:49:13,760 पिक्सल के लिए शून्य और लोगों को है, लेकिन वे भी कुछ मेटाडेटा है - 1106 00:49:13,760 --> 00:49:16,960 सच नहीं है कि भावना में मेटा डेटा लेकिन यह है के लिए उपयोगी है. 1107 00:49:16,960 --> 00:49:21,370 यहाँ तो इन क्षेत्रों जिसका अर्थ है, और कर रहे हैं हम पी सेट में और अधिक विस्तार में इस देखेंगे 1108 00:49:21,370 --> 00:49:25,810 5, उससे पहले शून्य और लोगों कि एक छवि में पिक्सल का प्रतिनिधित्व करते हैं, 1109 00:49:25,810 --> 00:49:29,110 जैसे मेटाडेटा का एक गुच्छा है छवि का आकार और 1110 00:49:29,110 --> 00:49:30,250 छवि की चौड़ाई. 1111 00:49:30,250 --> 00:49:32,910 और मैं कुछ दूर तोड़ रहा हूँ नोटिस यहाँ मनमाना बातें - 1112 00:49:32,910 --> 00:49:34,260 चौड़ाई और ऊंचाई. 1113 00:49:34,260 --> 00:49:36,160 बिट गिनती और कुछ अन्य बातें. 1114 00:49:36,160 --> 00:49:37,840 तो एक फ़ाइल में कुछ मेटाडेटा नहीं है. 1115 00:49:37,840 --> 00:49:41,470 >> लेकिन फाइलें रखी हैं कैसे समझने के द्वारा इस तरह से बाहर, तुम वास्तव में कर सकते हैं 1116 00:49:41,470 --> 00:49:45,890 तब छवियों में हेरफेर, छवियों को ठीक डिस्क से छवियों का आकार. 1117 00:49:45,890 --> 00:49:47,560 लेकिन तुम जरूरी नहीं कर सकते उन्हें बढ़ाने. 1118 00:49:47,560 --> 00:49:48,480 मैं एक तस्वीर की जरूरत है. 1119 00:49:48,480 --> 00:49:52,840 तो मैं आपको जो देखा, यहाँ वापस आरजे के पास गया काफी कुछ समय पहले स्क्रीन पर. 1120 00:49:52,840 --> 00:49:57,160 मैं यहाँ मुख्य वक्ता के ऊपर खुला और, अगर यह है क्या आप में ज़ूम करने के लिए प्रयास करते हैं तो क्या होता है और 1121 00:49:57,160 --> 00:49:59,380 आरजे वृद्धि. 1122 00:49:59,380 --> 00:50:01,480 उन्होंने कहा कि किसी भी बेहतर वास्तव में नहीं मिल रहा है. 1123 00:50:01,480 --> 00:50:06,240 अब प्रमुख वक्ता की तरह यह एक धुंधला है बस पर व्याख्या करने के लिए थोड़ा सा, 1124 00:50:06,240 --> 00:50:11,040 आरजे विशेष रूप से नहीं मिलता है कि तथ्य आप में ज़ूम जब बढ़ाया 1125 00:50:11,040 --> 00:50:13,310 और इसे इस तरह करते हैं, चौकों देखते हैं? 1126 00:50:13,310 --> 00:50:15,490 हाँ, आप निश्चित रूप से देख सकते हैं एक प्रोजेक्टर पर चौकों. 1127 00:50:15,490 --> 00:50:17,690 >> यही कारण है कि आप को बढ़ाने जब तुम क्या हो. 1128 00:50:17,690 --> 00:50:22,570 लेकिन यह कैसे हमारे आरजे या समझने में स्माइली चेहरा हमें सूचित करेंगे कार्यान्वित किया जाता है 1129 00:50:22,570 --> 00:50:24,950 वास्तव में कोड लिखने कि manipulates इन बातों को. 1130 00:50:24,950 --> 00:50:29,970 और मैं मैं के साथ, इस नोट पर खत्म लगा 55 एक कि है बढ़ाने के सेकंड, 1131 00:50:29,970 --> 00:50:31,230 मैं हिम्मत, बल्कि भ्रामक कहना. 1132 00:50:31,230 --> 00:50:32,990 >> [वीडियो प्लेबैक] 1133 00:50:32,990 --> 00:50:34,790 >> -वह झूठ बोल रहा है. 1134 00:50:34,790 --> 00:50:38,310 क्या बारे में, मैं नहीं जानता. 1135 00:50:38,310 --> 00:50:41,200 >> तो हम क्या जानते हो? 1136 00:50:41,200 --> 00:50:45,280 >> -कि 9:15 रे Santoya पर एटीएम पर था. 1137 00:50:45,280 --> 00:50:47,830 >> तो सवाल यह है कि क्या वह 9:16 पर कर रहा था? 1138 00:50:47,830 --> 00:50:50,750 >> नौ मिलीमीटर शूटिंग कुछ पर. 1139 00:50:50,750 --> 00:50:52,615 शायद वह निशानची देखा. 1140 00:50:52,615 --> 00:50:54,760 >> या उसके साथ काम कर रहा था. 1141 00:50:54,760 --> 00:50:56,120 >> -रुको. 1142 00:50:56,120 --> 00:50:57,450 एक वापस जाओ. 1143 00:50:57,450 --> 00:50:58,700 >> क्या आप देखते हैं? 1144 00:50:58,700 --> 00:51:05,530 1145 00:51:05,530 --> 00:51:09,490 >> उसके चेहरे, पूर्ण स्क्रीन लाओ. 1146 00:51:09,490 --> 00:51:09,790 >> उनकी चश्मा. 1147 00:51:09,790 --> 00:51:11,040 >> वहाँ एक प्रतिबिंब है. 1148 00:51:11,040 --> 00:51:21,790 1149 00:51:21,790 --> 00:51:23,520 >> -कि Neuvitas बेसबॉल टीम है. 1150 00:51:23,520 --> 00:51:24,530 यही कारण है कि उनके लोगो है. 1151 00:51:24,530 --> 00:51:27,040 >> और वह है जो कोई भी बात कर रहा है उस जैकेट पहने. 1152 00:51:27,040 --> 00:51:27,530 >> [अंत वीडियो प्लेबैक] 1153 00:51:27,530 --> 00:51:29,180 >> डेविड जे मालन: इस वसीयत समस्या सेट 5 हो. 1154 00:51:29,180 --> 00:51:30,720 हम अगले सप्ताह में आप देखेंगे. 1155 00:51:30,720 --> 00:51:32,330 >> मर्द अध्यक्ष: अगले CS50 पर. 1156 00:51:32,330 --> 00:51:39,240 >> [क्रिकेट चहकती] 1157 00:51:39,240 --> 00:51:41,270 >> [संगीत खेल]