1 00:00:00,000 --> 00:00:00,410 2 00:00:00,410 --> 00:00:03,130 >> DAVID J. مالان: وهكذا اتضح أن نسخ سلسلة ليست ما يقرب من 3 00:00:03,130 --> 00:00:05,750 البساطة نسخ بدائية، مثل الباحث أو عوامة. 4 00:00:05,750 --> 00:00:09,190 بعد كل شيء، تحت غطاء سلسلة هو حرف التسلسل. 5 00:00:09,190 --> 00:00:13,130 حتى نسخ سلسلة، وبالتالي، يجب أن تنطوي على نسخ كاملة من هذا التسلسل 6 00:00:13,130 --> 00:00:14,240 حرفا. 7 00:00:14,240 --> 00:00:17,470 >> دعونا نوجه اهتمامنا مرة أخرى إلى أن تنفيذ مشاركة ونقتلع هذه 8 00:00:17,470 --> 00:00:21,470 الخط، سلسلة يساوي ر ق، والتي كان من الواضح ليس كافيا. 9 00:00:21,470 --> 00:00:24,440 دعونا استبدالها الخط الذي يبدو، بدلا من ذلك، مثل هذا. 10 00:00:24,440 --> 00:00:34,020 سلسلة ر يحصل malloc من طول سلسلة من ق زائد 1 مرة حجم شار. 11 00:00:34,020 --> 00:00:36,320 >> الآن هناك اقتبس قليلا ذاهب على هذا في سطر من التعليمات البرمجية. 12 00:00:36,320 --> 00:00:39,330 الأولى، malloc، قصيرة للذاكرة التخصيص، و 13 00:00:39,330 --> 00:00:40,700 وظيفة يفعل ذلك بالضبط. 14 00:00:40,700 --> 00:00:44,740 إعطاء عدد صحيح، فإنه يعود إلى لك عنوان جزءا من الذاكرة من 15 00:00:44,740 --> 00:00:45,960 أن العديد من وحدات البايت. 16 00:00:45,960 --> 00:00:50,090 وفي الوقت نفسه، وطول سلسلة من ليالي زائد 1 من المفترض أن تشير إلى أننا نريد كما 17 00:00:50,090 --> 00:00:54,690 العديد من وحدات البايت كما ق تحتل بالفعل، بما في ذلك فاصل فارغة لها، و 18 00:00:54,690 --> 00:00:57,050 0 مائل في نهاية سلسلة. 19 00:00:57,050 --> 00:01:00,170 >> وفي الوقت نفسه، لا أتذكر بالضرورة كيف كبيرة هو شار، حتى 20 00:01:00,170 --> 00:01:04,340 على الرغم من معظم النظم على انها مجرد 1 بايت، لذلك سأتصل حجم شار ل 21 00:01:04,340 --> 00:01:08,210 معرفة كيفية حيوي كبير الطابع الفردي هو. 22 00:01:08,210 --> 00:01:12,550 مرة واحدة مضروبة معا، أعود ل عدد البايتات التي أحتاج. 23 00:01:12,550 --> 00:01:14,680 >> ولكن ماذا لو فشل malloc لل عودة الذاكرة نحتاج؟ 24 00:01:14,680 --> 00:01:16,730 أنا سوف تحقق أفضل لذلك على النحو التالي. 25 00:01:16,730 --> 00:01:23,330 إذا ر يساوي فارغة، ثم أنا ذاهب الأولى ليالي الحرة، والذاكرة إرجاعها من قبل الحصول على 26 00:01:23,330 --> 00:01:27,120 سلسلة، ثم أنا ذاهب ل العودة 1، للدلالة على الخطأ. 27 00:01:27,120 --> 00:01:30,360 >> ولكن إذا كان كل شيء على ما يرام، وانا ذاهب الى المضي قدما لاستخدام حلقة أربعة وتكرار 28 00:01:30,360 --> 00:01:31,110 على النحو التالي. 29 00:01:31,110 --> 00:01:36,000 للحصول على كثافة العمليات ط 0، ن التساوي طول سلسلة من ليالي. 30 00:01:36,000 --> 00:01:40,350 انا ذاهب الى القيام بذلك طالما أنا هو أقل من أو يساوي إلى n لدرجة أنني 31 00:01:40,350 --> 00:01:44,460 تكرار حتى من خلال وبما في ذلك لاغية الطابع تنتهي في ليالي. 32 00:01:44,460 --> 00:01:47,450 >> وعلى كل التكرار، وأنا الذهاب الى زيادة ط. 33 00:01:47,450 --> 00:01:52,496 وفي الوقت نفسه، داخل هذه الحلقة، نسخ ق وحرف ط عشر إلى ر ط عشر 34 00:01:52,496 --> 00:01:59,310 موقع، يكفي أن تفعل طن قوس ط ق يحصل قوس ط. 41 00:01:59,320 --> 00:02:02,750 >> دعونا الآن حفظ وتجميع، و تشغيل هذا البرنامج الجديد. 42 00:02:02,750 --> 00:02:06,690 جعل نسخة 1 نقطة مائلة نسخة 1. 43 00:02:06,690 --> 00:02:09,460 وأنا أقول شيء من هذا القبيل مرحبا في كل صغيرة. 44 00:02:09,460 --> 00:02:12,280 ولله الحمد، وهذا وقتي الأصلي دون تغيير. 45 00:02:12,280 --> 00:02:13,660 مرحبا في كل صغيرة. 46 00:02:13,660 --> 00:02:15,540 ولكن النسخة هو، في الواقع، رسملتها. 47 00:02:37,120 --> 00:02:38,963