1 00:00:00,000 --> 00:00:10,970 >> [সঙ্গীত বাজানো] 2 00:00:10,970 --> 00:00:12,536 >> ডেভিড জে Malan: ঠিক আছে. 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 আপনি করেছেন যে এই কম্পাইলার, ঝনঝন শব্দ, বিদ্যমান এই প্রণালী দ্বারা invoking হয়েছে 9 00:00:23,480 --> 00:00:27,100 অন্যান্য টুল যে একরকম করুন বলা magically আপনার সোর্স কোড পরিবর্তিত 10 00:00:27,100 --> 00:00:31,350 অবজেক্ট কোড, zeros এবং বেশী মধ্যে আপনার কম্পিউটারের CPU-র কেন্দ্রিয় 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 zeros এবং বেশী মধ্যে প্রোগ্রাম. 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 তাই কোন zeros এবং বেশী এখনও যে সময়ে. 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 একটি প্রোগ্রাম কম্পাইল সত্যিই মানে , C-এর মতো কিছু থেকে তা গ্রহণ 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 >> অবশেষে, এসেম্বলিং যে ভাষা লাগে আমরা চলেছি যে zeros এবং বেশী যাও 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 সম্মিলন যা শুধু একটা মুহূর্ত, দেখতে আপনার zeros এবং zeros সঙ্গে বেশী এবং 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 যেখানে কিছু zeros এবং বেশী. 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 , ঝনঝন চালানোর বদলে যা চারটি স্বয়ংক্রিয়রূপে 59 00:02:51,430 --> 00:02:52,870 আমাদের জন্য যারা ধাপ. 60 00:02:52,870 --> 00:02:58,620 এবং আমি ঝনঝন-s করতে যাচ্ছে এবং করছি লিখুন তারপর hello.c এবং তারপর. 61 00:02:58,620 --> 00:03:00,590 >> এবং আমি একটি জ্বলজ্বলে প্রম্পট পাবেন আবার, যা ভাল. 62 00:03:00,590 --> 00:03:05,280 এবং এখন একটি সামান্য বড় উইন্ডোতে, আমি এখানে gedit খুলুন যাচ্ছি. 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 নির্দেশাবলীর যে আপনার ইন্টেল CPU-র বা যাই হোক না কেন এটা ভিতরে যে হয় 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 >> আপনি ভিতরে একটি বিশেষ CPU-র আছে সুতরাং যখন আপনার কম্পিউটার এর, এটা কি করে তোলে 71 00:03:30,370 --> 00:03:34,300 নেভিগেশন স্বতন্ত্র, বনাম অন্যান্য CPU-র বাজার, যা নির্দেশনা থেকে এটি 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 তারপর ঝনঝন এই সমাবেশ রূপান্তরের নিচে zeros এবং বেশী ভাষা. 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 এবং পরিশেষে, যারা zeros এবং বেশী zeros এবং বেশী সঙ্গে মিলিত হয় 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 যারা zeros এবং বেশী পেতে. 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 এখানে নিচে, পদক্ষেপ, আমরা একরকম আছে লিংক, তাই কথা বলতে, আপনার zeros এবং বেশী 127 00:06:13,730 --> 00:06:18,430 এক মধ্যে তার zeros এবং বেশী সঙ্গে পরিণামে যে সহজ প্রোগ্রাম 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 যাও, 1:15 PM তে পোস্ট করা এই শুক্রবার. 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 >> [GROANING] 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 >> [GROANING] 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 PM তে পোস্ট করা হতে যাচ্ছে. 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 আমি তাই, এটি একটি ফরেনসিক চিত্র তৈরি করতে পারেন zeros অনুলিপি করে, কথা বলতে এবং আপনি 185 00:08:43,010 --> 00:08:46,830 যে মেমরি কার্ড এর বেশী বন্ধ, কিনা তার একটি SD কার্ড অথবা কম্প্যাক্ট ফ্ল্যাশ কার্ড বা 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 আভা recovers যে সি কোড আমার জন্য 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 rectangles এবং ovals না. 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 উন্নত মধ্যে buzz এই শব্দ ভালো হয় সবচেয়ে কোনো অপরাধ সংক্রান্ত শো. 210 00:09:45,550 --> 00:09:49,240 আপনি একটি খুব নিতে এবং যদি বাস্তবতা এরকম একটি সন্দেহভাজন এর blurry ছবি 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 যদি আপনি কাউকে এর glint দেখতে পারে না যে প্রতিশ্রুতিবদ্ধ যারা চোখ 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 >> Ya, যে হবে আপ আঁট করা? 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 >> সঙ্গে ডান সরঞ্জাম, অঙ্কিত বৃহদাকার এবং শাণিত করা যাবে. 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 >> অন ​​Hang. 247 00:10:52,320 --> 00:10:54,290 >> -I'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 >> একটি চিত্র enhancer-পেয়েছেন যে বিটম্যাপ করতে পারেন? 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 >> [END টি ভিডিও প্লেব্যাক] 287 00:11:47,910 --> 00:11:51,470 >> ডেভিড জে Malan: সুতরাং সমস্যা সেট 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 উপরে কারিগরি সেগমেন্ট, রিকল, বোঝায় প্রকৃত zeros এবং বেশী যাও 296 00:12:14,310 --> 00:12:16,000 যে আপনার প্রোগ্রাম রচনা করুন. 297 00:12:16,000 --> 00:12:19,340 আছে, যে, নিচে কয়েকটি সক্রিয়া বা 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 আপনি যদি একটি ফাংশন কল যে কোনো সময়, এটা তার জন্য মেমরি sliver দেওয়া 309 00:12:42,890 --> 00:12:45,020 স্থানীয় ভেরিয়েবল বা তার পরামিতি. 310 00:12:45,020 --> 00:12:48,810 এবং pictorially, আমরা দেখতে যে প্রতিটি সঙ্গে যখন একটি ধারাবাহিক ফাংশন, বলা 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 mutate বা পরিবর্তন. 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 সুতরাং খুব smartly, memcopy কলিং যখন, , যা নামই ইঙ্গিত করে, ঠিক 331 00:13:47,260 --> 00:13:50,630 তার দ্বিতীয় যুক্তি থেকে কপি মেমরি তার প্রথম যুক্তি মধ্যে. 332 00:13:50,630 --> 00:13:54,730 তৃতীয় যুক্তি, খুব smartly হয় আপনি না নিশ্চিত করুন যে আপনি চেক 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 দূরে দৃশ্য, tucks একটি 32 বিট মান যে এটি করা উচিত কি ঠিকানায় মনে করিয়ে দেয়, 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 >> এখন এই সমস্যা শুধুমাত্র ঘটায় ছিল আমরা মেমরি সম্পর্কে কথা বলা শুরু 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 আপনার নাম State - 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 প্রথম let এর কিছু স্তর ফিরে ছুলা. 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 : D-একটি-ভী-i-d, লিখুন যেখানে ডি,-A-ভী-i-D: ব্যাকস্ল্যাশ শূন্য উপর ভিত্তি করে সংরক্ষিত 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 সুতরাং এটা যে: D-একটি-ভী-i-D: কারণ দাঁড়িয়েছে ব্যাকস্ল্যাশ শূন্য সংরক্ষিত হয় 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 এবং তারপর: D-একটি-ভী-i-D: একরকম এই ফাংশন আপ শেষ. 415 00:17:53,940 --> 00:17:55,320 এবং আমি অতিসরল করে তোলা যাচ্ছে না. 416 00:17:55,320 --> 00:18:00,050 কিন্তু এর অনুমান করা যাক তার ডি,-A-ভী-i-D: যে ব্যাকস্ল্যাশ শূন্য. 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 সঞ্চয় করা যাবে না স্ট্যাকের উপর: D-একটি-ভী-i-D: আমি কারণ 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 ভাল Bode না. 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 অকার্যকর দ্বারা সেইসাথে denoted. 463 00:20:34,040 --> 00:20:37,830 >> এবং foo বিন্যাস করতে যাচ্ছে শুধুমাত্র জিনিস সম্ভবত না, যা কল foo বিন্যাস, 464 00:20:37,830 --> 00:20:39,100 বুদ্ধিমান ধারণা, কিন্তু তাই এটি হতে. 465 00:20:39,100 --> 00:20:40,490 Ent প্রধান অকার্যকর. 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 OH uh. 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 >> [Sighs] 485 00:21:22,050 --> 00:21:25,110 >> আমি জানি কিন্তু আমি মনে করি আমরা ঠিক যে মুছে দেওয়া হয়. 486 00:21:25,110 --> 00:21:28,410 Uh, হাঁ. 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 ঠিক আছে, Bye দাঁড়ানো. 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 >> তাই এর এই কম্পাইল করা যাক - 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 Phew! 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 >> এখন সাধারণ পদ, এই recursion হয়. 518 00:22:34,470 --> 00:22:36,970 এবং আমরা একটি কয়েক সপ্তাহ চিন্তা আগে recursive ভাল. 519 00:22:36,970 --> 00:22:40,330 Recursion এই ঐন্দ্রজালিক উপায় succinctly সুপার নিজেকে প্রকাশ. 520 00:22:40,330 --> 00:22:41,400 আর এটা কাজ করে. 521 00:22:41,400 --> 00:22:45,060 কিন্তু সব কী বৈশিষ্ট্য আছে আমরা স্বপ্ন করেছি recursive প্রোগ্রাম 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 আমরা আমাদের সীমার overstepping করছি মেমরি সেগমেন্ট তথাকথিত. 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 আমরা recursion ধর্মপ্রচার করেনি সুতরাং যদিও এই সম্ভাব্য ঐন্দ্রজালিক জিনিস হিসাবে একটি 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 >> তাই অন্য একটি downside হয় বা আছে আমরা করেছি কি অন্য gotcha 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 আমার সম্পর্কে Hello-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 এবং এখন আমি খুঁজে মুদ্রণ am যে ঠিকানায় পংক্তি. 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 আমি এগিয়ে যান এবং Valgrind চালানো যাচ্ছে না যার প্রথম কমান্ড পরামিতি সহ 568 00:24:56,940 --> 00:25:00,260 লাইন আর্গুমেন্ট নাম যে প্রোগ্রাম হ্যালো-2. 569 00:25:00,260 --> 00:25:02,650 এবং দুর্ভাগ্যবশত এটা আউটপুট নৃশংসভাবে হয় 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 >> সুতরাং Valgrind অনুরূপ 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 Mac বা একটি পিসি. 584 00:25:30,300 --> 00:25:33,730 আপনি কি কখনও আপনার কম্পিউটার ব্যবহার করেছেন এবং বিভিন্ন মধ্যে পুনরায় বুট করার সময় 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 >> এবং যাতে আপনি, যদিও এখানে দেখতে কি আবার Valgrind এর আউটপুট 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 : D-একটি-ভী-i-D: ব্যাকস্ল্যাশ শূন্য, পাঁচটি অক্ষর নাম প্লাস নাল টারমিনেটর. 610 00:26:41,520 --> 00:26:46,350 সুতরাং এই প্রোগ্রামের লক্ষ্য Valgrind যে আমি দ্বারা, দৃশ্যত, ছয় বাইট জন্য জিজ্ঞাসা 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 সুতরাং আমরা আসলে অন্য কমান্ড দিতে পারে লাইন আর্গুমেন্ট আপনি Valgrind যাও 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 YEP, আপনাকে ধন্যবাদ. 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 এখনই Valgrind আসলে খুঁজছেন হয় আমার কোড মধ্যে কঠিন একটি সামান্য. 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 সুতরাং এখন আমাকে এই কম্পাইল করা যাক. 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 কিন্তু আমি Valgrind ফিরে যান এবং পুনরায় চালনা যদি আমার সদ্য নেভিগেশন যে একই কমান্ড 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 , যারা বড় প্রোগ্রাম জন্য, Valgrind আপনি সনাক্ত সাহায্য করতে পারেন 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, আমি দৃশ্যত একটি ঘোষণা করছি কোন int এবং এটি এক্স কলিং যাও পয়েন্টার. 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 হ্যাঁ, আপনি কোন int প্রায়ই যে প্রত্যাহার হলে 4 বাইট, অন্তত এটা হয় 702 00:30:22,410 --> 00:30:25,110 প্রয়োগ, বার 4 10 সম্ভবত 40 হয়. 703 00:30:25,110 --> 00:30:28,920 সুতরাং malloc একটি ঠিকানা ফিরে না একটি মেমরি খণ্ড এবং সংরক্ষণের যে 704 00:30:28,920 --> 00:30:30,800 x এর মধ্যে শেষ পর্যন্ত সুরাহা করে. 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 গোটা আয়তক্ষেত্র আঁকতে যে আমার RAM-র সমস্ত প্রতিনিধিত্ব করে. 709 00:30:42,990 --> 00:30:44,790 >> আমরা বলবো যে স্ট্যাকের নীচে হয়. 710 00:30:44,790 --> 00:30:47,010 এবং একটি টেক্সট সেগমেন্টের মধ্যে আছে uninitialized তথ্য. 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, executes আক্ষরিক কি 735 00:31:53,630 --> 00:31:57,170 এখানে x এর ভিতরে সঞ্চিত? 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 এবং Ox নীরস হয়. 739 00:32:01,550 --> 00:32:03,200 এটা ঠিক এখানে মানে একটি হেক্সাডেসিমেল সংখ্যা. 740 00:32:03,200 --> 00:32:06,490 কিন্তু কি কি আমি দোকান করেছেন কি যে হয় x এর মধ্যে, যা একটি স্থানীয় পরিবর্তনশীল. 741 00:32:06,490 --> 00:32:10,260 কিন্তু তার ডাটা টাইপ, আবার, কোন int একটি ঠিকানা. 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 ফিরে, আমরা এই দূরে বিমূর্ত পারেন বেশ যুক্তিসঙ্গতভাবে এবং শুধু বলে যে হল x একটি 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 সুতরাং x এর বন্ধনী 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 কিন্তু আমরা x বন্ধনী এ এটি করা করার চেষ্টা করছেন যেখানে এই যা 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 কিন্তু আমরা এখন Valgrind চালানো হলে এর দেখতে দিন. 787 00:34:11,060 --> 00:34:14,170 প্রথম নজরে, আমার প্রোগ্রাম প্রতাপ পুরোপুরি সঠিক হবে বলে মনে হচ্ছে. 788 00:34:14,170 --> 00:34:18,010 কিন্তু সঙ্গে Valgrind সম্পর্কে চালানো যাক - লিক চেক মেমরি পূর্ণ সমান. 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 এটা যা কোন int, কারণ এটা আবার, চার বাইট হয়. 799 00:34:39,280 --> 00:34:42,510 সুতরাং Valgrind একটি বাগ খুঁজে পাওয়া যায় নি যে আমি, আমার কোড এ glancing, না. 800 00:34:42,510 --> 00:34:45,040 এবং হয়ত আপনার TF হবে বা না হবে. 801 00:34:45,040 --> 00:34:48,469 কিন্তু নিশ্চিত পাওয়া যায় যে জন্য Valgrind কি এমনকি আমরা সেখানে একটি ভুল করেছি 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 আমি, তাই x এর মুক্ত করতে পারে যে মেমরি ফেরত দিতে. 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 Valgrind সম্পর্কে পুনরায় আরম্ভ করা যাক একটি বড় উইন্ডোতে. 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 >> শুধু অর্থগৃধ্নু পেতে, এবং let এর আপনি যদি দেখতে অন্য বিক্ষোভের 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 কিভাবে 1,000? 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 কোনো আর্গুমেন্ট বিনা, আয় লাগে একটি float, এবং তাই ঘোষণা. 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 এই রক্তবর্ণ লাইন অন্য preprocessor হয় কারণ নির্দেশ 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 কিন্তু আপনি কি কখনও একটি নেভিগেশন man পৃষ্ঠাগুলি দেখতে হলে একটি কম্পিউটার সিস্টেমের কিছু রেফারেন্স 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 ঘোষণা করছি দুই অক্ষর, C1 এবং C2. 945 00:40:52,600 --> 00:40:57,080 এবং তারপর লাইন 68, আসলে আছে যা মনে করিয়ে দেয় যে কোড একটি লাইন 946 00:40:57,080 --> 00:41:01,140 আমাদের বন্ধু printf,, প্রদত্ত যে এটা উদ্ধৃতি চিহ্ন শতাংশ Cs আছে. 947 00:41:01,140 --> 00:41:06,490 কিন্তু এখানে কি ঘটছে সে লক্ষ্য করা. sscanf স্ট্রিং স্ক্যান এর মানে হল - 948 00:41:06,490 --> 00:41:11,690 একটি ফরম্যাট স্ক্যান মানে স্ট্রিং, ergo 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 তাই আমি এটা ঠিকানা দিতে যাচ্ছি C1 এবং C2 এর ঠিকানা. 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 মেমরি, C1 C2 এবং সামান্য অংশ, কিন্তু আছে আমরা, এটা তাদের ঠিকানা বলুন 968 00:42:03,585 --> 00:42:05,170 sscanf তা পরিবর্তন করতে পারেন. 969 00:42:05,170 --> 00:42:08,530 >> জীবনের sscanf এর উদ্দেশ্য সুতরাং, আমরা পড়তে হলে man পৃষ্ঠা পড়া কি 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 >> আমি দুটি ভেরিয়েবল পাস ঠিকানা, C1 এবং C2. 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 C1, আমি প্রত্যাশিত যে চরিত্র ব্যবহারকারী দেওয়া হয় না এবং শুধুমাত্র উপলব্ধ. 999 00:43:51,030 --> 00:43:54,680 সুতরাং একটি দ্রুত শুধুমাত্র glimpsed, কিন্তু আছে 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 অন্য কথায়, তিন টুকরা তথ্য, কোন int এবং একটি পছন্দ 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 তাই এখানে 19 এর মাধ্যমে লাইন 13, আমরা চাই, একটি নতুন ডাটা টাইপ ঘোষণা করছি 1022 00:45:01,910 --> 00:45:04,320 কোন int, কিন্তু এটা ছাত্র কলিং. 1023 00:45:04,320 --> 00:45:09,310 এবং ভেতরের এই পরিবর্তনশীল যাচ্ছে কোন int, একটি স্ট্রিং, - তিনটি বিষয় হতে 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 যদি ক্ষেত্রের কিছু r, এবং একটি বাড়িতে যদি ক্ষেত্রের কিছু r. 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 কোন int যা আইডি. 1059 00:46:39,200 --> 00:46:44,650 এবং এখানে আপনি যা করতে পারেন যা দিয়ে বাক্য গঠন এর এ ID ক্ষেত্রের মধ্যে কিছু সঞ্চয় 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 এই উপায় হিসেবে পরিচিত struct যান একজন ছাত্র এবং সেখানে কিছু করা. 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 করতে না দেওয়া বিন্দু স্ল্যাশ struct 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 Lauren 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 এটি একটি অনেক বেশি জটিল struct হয় সি মধ্যে এটি একটি ডজন অথবা অধিক ক্ষেত্র পেয়েছিলাম 1087 00:48:14,600 --> 00:48:15,880 কিছুটা cryptically নামে. 1088 00:48:15,880 --> 00:48:20,110 কিন্তু আপনি কি কখনও একটি গ্রাফিক্স শোনা করেছি বিটম্যাপ নামক ফাইল ফরম্যাট, BMP, এটা 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 কম্পিউটার, এটা zeros এবং সংরক্ষণ করার জন্য যথেষ্ট এই মত যে বেশী, যেখানে, 1097 00:48:42,680 --> 00:48:45,250 আবার, বেশী সাদা এবং zeros কালো. 1098 00:48:45,250 --> 00:48:48,290 একসঙ্গে, আপনি কার্যকরভাবে থাকে তাহলে বেশী এবং zeros এর হত্তয়া একটি, আপনি একটি আছে 1099 00:48:48,290 --> 00:48:51,030 পিক্সেল গ্রিড, এবং আপনি যদি lay তাদের আউট, আপনি একটি বুদ্ধিমান আছে 1100 00:48:51,030 --> 00:48:52,560 একটু হাসি মুখ. 1101 00:48:52,560 --> 00:48:58,150 এখন, বিটম্যাপ ফাইল ফরম্যাট, BMP, হয় কার্যকরভাবে যে ফণা নীচে, 1102 00:48:58,150 --> 00:49:00,970 কিন্তু আরো পিক্সেল Sot সঙ্গে যে আপনি আসলে রং উপস্থাপন করতে পারেন. 1103 00:49:00,970 --> 00:49:05,170 >> তবে আপনি যদি আরো পরিশীলিত আছে BMP এবং JPEG ও জিআইএফ মত ফাইল ফরম্যাটের 1104 00:49:05,170 --> 00:49:09,360 যা দিয়ে আপনি, যারা পরিচিত হতে পারে ডিস্কের মধ্যে ফাইল সাধারণত শুধুমাত্র 1105 00:49:09,360 --> 00:49:13,760 zeros এবং পিক্সেল জন্য বেশী আছে, কিন্তু তারা ভাল কিছু মেটাডেটা আছে - 1106 00:49:13,760 --> 00:49:16,960 সত্যিই হয় না যে অর্থে মেটা তথ্য কিন্তু আছে দরকারী. 1107 00:49:16,960 --> 00:49:21,370 সুতরাং এখানে এই ক্ষেত্র implying, এবং আমরা পি সেট মধ্যে বিশদ আলোচনা করা এই দেখতে পাবেন 1108 00:49:21,370 --> 00:49:25,810 5, যে zeros এবং বেশী যে আগে একটি ছবিতে পিক্সেল উপস্থাপন 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 তাই আমি আপনাকে দেখেছি, যারা এখানে RJ ফিরে গিয়েছিলাম বেশ কিছু সময় আগে পর্দায়. 1120 00:49:52,840 --> 00:49:57,160 আমি এখানে তান খুলুন এবং যদি, এই হল আপনি কি জুম করার চেষ্টা করলে কী ঘটবে এবং 1121 00:49:57,160 --> 00:49:59,380 RJ উন্নত. 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 RJ বিশেষ পাবেন না যে আপনি জুম যখন উন্নত 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 কিন্তু বুঝতে কিভাবে আমাদের RJ বা হাস্যজ্জল মুখ বাস্তবায়িত হয় আমাদের দেওয়া হবে 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 >> [END টি ভিডিও প্লেব্যাক] 1153 00:51:27,530 --> 00:51:29,180 >> ডেভিড জে Malan: এই আছি সমস্যা সেট 5 হতে. 1154 00:51:29,180 --> 00:51:30,720 আমরা পরের সপ্তাহে দেখতে পাবেন. 1155 00:51:30,720 --> 00:51:32,330 >> MALE স্পিকার: পরের CS50 না. 1156 00:51:32,330 --> 00:51:39,240 >> [CRICKETS CHIRPING] 1157 00:51:39,240 --> 00:51:41,270 >> [সঙ্গীত বাজানো]