[Powered by Google Translate] [וואַלגרינד] [נאַטע האַרדיסאָן, האַרוואַרד אוניווערסיטעט] דאס איז קס50, CS50.TV] עטלעכע פון ​​די מערסט שווער באַגז אין C מגילה קומען פון די מיסמאַנידזשמאַנט פון זכּרון. עס זענען אַ ריזיק נומער פון וועגן צו שרויף דאס אַרויף, אַרייַנגערעכנט אַלאַקייטינג דעם אומרעכט סומע פון ​​זכּרון, פערגעטינג צו ינישאַלייז וועריאַבאַלז, שרייבן פאר אָדער נאָך דעם סוף פון אַ באַפער, און פריינג האַלטן זכּרון קייפל מאל. די סימפּטאָמס קייט פון ינטערמיטאַנט קראַשיז צו מיסטיריאַסלי אָוווערריטאַן וואַלועס, אָפֿט אין ערטער און צייטן ווייַט אַוועקגענומען פון דער אָריגינעל טעות. טרייסינג די באמערקט פּראָבלעם צוריק צו דער אַנדערלייינג וואָרצל גרונט קענען זייַן טשאַלאַנדזשינג, אָבער צומ גליק דאָרט ס אַ נוציק פּראָגראַם גערופן וואַלגרינד וואָס קענען טאָן אַ פּלאַץ צו העלפן. איר לויפן אַ פּראָגראַם אונטער וואַלגרינד צו געבן ברייט קאָנטראָלירונג פון קופּע זכּרון אַלאַקיישאַנז און אַקסעססעס. ווען וואַלגרינד דיטעקץ אַ פּראָבלעם, עס גיט איר באַלדיק, דירעקט אינפֿאָרמאַציע אַז אַלאַוז איר צו מער לייכט געפֿינען און פאַרריכטן דעם פּראָבלעם. וואַלגרינד אויך מעלדעט אויף ווייניקער דעדלי זכּרון ישוז, אַזאַ ווי זכּרון ליקס, אַלאַקייטינג קופּע זכּרון, און פערגעטינג צו פֿרייַ עס. ווי אונדזער קאַמפּיילער, קלאַנג, אין אונדזער דעבוגגער, גדב, וואַלגרינד איז פֿרייַ סאָפטווער, און עס איז אינסטאַלירן אויף די אַפּפּליאַנסע. וואַלגרינד לויפט אויף דיין ביינערי עקסעקוטאַבלע, נישט דיין. C אָדער. ה מקור קאָד טעקעס, אַזוי זייַן זיכער איר האָט צונויפגעשטעלט אַן אַרויף-צו-טאָג קאָפּיע פון ​​אייער פּראָגראַם ניצן קלאַנג אָדער מאַכן. דעמאָלט, פליסנדיק דיין פּראָגראַם אונטער וואַלגרינד קענען זייַן ווי פּשוט ווי נאָר פּרעפיקסינג דער נאָרמאַל פּראָגראַם באַפֿעל מיט די וואָרט וואַלגרינד, וואָס סטאַרץ אַרויף וואַלגרינד און לויפט די פּראָגראַם ין פון עס. ווען סטאַרטינג, וואַלגרינד טוט עטלעכע קאָמפּלעקס דזשיגגערינג צו קאַנפיגיער די עקסעקוטאַבלע פֿאַר די זכּרון טשעקס, אַזוי עס קענען נעמען אַ ביסל צו באַקומען אַרויף און פליסנדיק. די פּראָגראַם וועט דעמאָלט ויספירן נאָרמאַלי, זייַן עס פיל מער סלאָולי, און ווען עס פינישעס, וואַלגרינד וועט דרוקן אַ קיצער פון זייַן זכּרון באַניץ. אויב אַלע גייט גוט, עס וועט קוקן עפּעס ווי דאָס: אין דעם פאַל,. / קלעאַנ_פּראָגראַם איז דער דרך צו די פּראָגראַם איך ווילן צו לויפן. און בשעת דעם איינער טוט נישט נעמען קיין טענות, אויב עס האט איך 'ד נאָר שטיפט זיי אויף צו די סוף פון די באַפֿעל ווי געוויינטלעך. ריין פּראָגראַם איז נאָר אַ נאַריש ביסל פּראָגראַם איך באשאפן אַז אַלאַקייץ פּלאַץ פֿאַר אַ בלאָק פון ינץ אויף די קופּע, שטעלן עטלעכע וואַלועס ין פון זיי, און פריז די גאנצע בלאָק. דאס איז וואָס איר ניטאָ שיסערייַ פֿאַר, קיין ערראָרס און קיין ליקס. אן אנדער וויכטיק מעטריק איז די גאַנץ נומער פון ביטעס אַלאַקייטיד. דיפּענדינג אויף די פּראָגראַם, אויב דיין אַלאַקיישאַנז זענען אין די מעגאבייט אָדער העכער, איר ניטאָ מיסטאָמע טאן עפּעס פאַלש. זענט איר אַננעסאַסעראַלי סטאָרינג דופּליקאַטן? זענט איר ניצן די קופּע פֿאַר סטאָרידזש, ווען עס וואָלט זייַן בעסער צו נוצן די אָנלייגן? אַזוי, זכּרון ערראָרס קענען זייַן באמת בייז. די מער אָפן אָנעס גרונט ספּעקטאַקיאַלער קראַשיז, אָבער אַפֿילו דעמאָלט עס קענען נאָך זייַן שווער צו האָר - האָריק וואָס פּונקט געפירט צו דעם קראַך. מער ינסידיאָוסלי, אַ פּראָגראַם מיט אַ זכּרון טעות קענען נאָך צונויפנעמען קלינלי און קענען נאָך ויסקומען צו אַרבעטן ריכטיק ווייַל איר געראטן צו באַקומען מאַזלדיק רובֿ פון די צייַט. נאָך עטלעכע "מצליח אַוטקאַמז," איר זאל נאָר טראַכטן אַז אַ קראַך איז אַ פלוקע פון ​​די קאָמפּיוטער, אָבער די קאָמפּיוטער איז קיינמאָל פאַלש. פליסנדיק וואַלגרינד קענען העלפן איר שפּור אַראָפּ די גרונט פון קענטיק זכּרון ערראָרס ווי ווויל ווי געפֿינען לערקינג ערראָרס איר טאָן ניט אַפֿילו נאָך וויסן וועגן. יעדער צייַט וואַלגרינד דיטעקץ אַ פּראָבלעם, עס פּרינץ אינפֿאָרמאַציע וועגן וואָס עס באמערקט. יעדער נומער איז פערלי טערס - דער מקור שורה פון די אַפענדינג לימעד, וואָס די אַרויסגעבן איז, און אַ ביסל אינפֿאָרמאַציע וועגן דעם זכּרון ינוואַלווד - אָבער אָפֿט עס ס גענוג אינפֿאָרמאַציע צו גלייַך דיין ופמערקזאַמקייַט צו די רעכט אָרט. דאָ איז אַ בייַשפּיל פון וואַלגרינד פליסנדיק אויף אַ וואָגן פּראָגראַם וואָס טוט אַ פאַרקריפּלט לייענען פון קופּע זכּרון. מיר זען קיין ערראָרס אָדער וואָרנינגז אין זאַמלונג. אַ-טאַקע, די טעות קיצער זאגט אַז עס זענען צוויי ערראָרס - צוויי פאַרקריפּלט לייענט פון נומער 4 - ביטעס, וואָס איז. ביידע שלעכט לייענט פארגעקומען אין די הויפּט פֿונקציע פון ​​ינוואַליד_רעאַד.ק, דער ערשטער אויף שורה 16 ​​און די רגע אויף שורה 19. זאל ס קוק בייַ די קאָד. קוקט ווי דער ערשטער רופן צו פּרינטף פרוווט צו לייענען איינער ינט פאַרגאַנגענהייַט דער סוף פון אונדזער זכּרון פאַרשפּאַרן. אויב מיר קוקן צוריק אין וואַלגרינד ס פּראָדוקציע, מיר זען אַז וואַלגרינד דערציילט אונדז פּונקט וואָס. דער אַדרעס מיר רע טריינג צו לייענען סטאַרץ 0 ביטעס פאַרגאַנגענהייַט די סוף פון די בלאָק פון גרייס 16 ביטעס - פיר 32-ביסל ינץ אַז מיר אַלאַקייטיד. וואָס איז, דער אַדרעס מיר זענען טריינג צו לייענען סטאַרץ רעכט בייַ די סוף פון אונדזער בלאָק, פּונקט ווי מיר זען אין אונדזער שלעכט פּרינטף רופן. איצט, פאַרקריפּלט לייענט זאל נישט ויסקומען ווי אַז גרויס פון אַ האַנדלען, אָבער אויב איר ניטאָ ניצן אַז דאַטן צו קאָנטראָלירן די לויפן פון דיין פּראָגראַם - פֿאַר בייַשפּיל, ווי טייל פון אַן אויב סטאַטעמענט אָדער שלייף - דעמאָלט זאכן קענען בישטיקע גיין שלעכט. היטן ווי איך קענען לויפן די ינוואַליד_רעאַד פּראָגראַם און גאָרנישט אויס פון דער פּראָסט כאַפּאַנז. סקערי, כאַ? איצט, לאָזן ס קוק אין עטלעכע מער מינים פון ערראָרס אַז איר זאל טרעפן אין דיין קאָד, און מיר וועט זען ווי וואַלגרינד דיטעקץ זיי. מיר נאָר געזען אַ בייַשפּיל פון אַ ינוואַליד_רעאַד, אַזוי איצט לאָזן ס טשעק אויס אַ ינוואַליד_ווריטע. ווידער, קיין ערראָרס אָדער וואָרנינגז אין זאַמלונג. אָוקיי, וואַלגרינד זאגט אַז עס זענען צוויי ערראָרס אין דעם פּראָגראַם - און ינוואַליד_ווריטע און אַ ינוואַליד_רעאַד. זאל ס טשעק אויס דעם קאָד. קוקט ווי מיר ווע גאַט אַ בייַשפּיל פון דער קלאַסיש סטרלען פּלוס איינער באַג. די קאָד טוט נישט מאַללאָק אַן עקסטרע ביטע פון ​​פּלאַץ פֿאַר די / 0 כאַראַקטער, אַזוי ווען Str קאָפּיע געגאנגען צו שרייַבן עס בייַ ססובסטרלען "קס50 ראַקס!" עס געשריבן 1 ביטע פאַרגאַנגענהייַט דער סוף פון אונדזער פאַרשפּאַרן. די ינוואַליד_רעאַד קומט ווען מיר מאַכן אונדזער רופן צו פּרינטף. פּרינטף ענדס אַרויף לייענען פאַרקריפּלט זכּרון ווען עס לייענט די / 0 כאַראַקטער ווי עס קוקט אין די סוף פון דעם E שטריקל עס ס דרוקן. אבער קיינער פון דעם אנטרונען וואַלגרינד. מיר זען אַז עס געכאפט די ינוואַליד_ווריטע ווי טייל פון די Str קאָפּיע אויף שורה 11 פון הויפּט, און די ינוואַליד_רעאַד איז טייל פון פּרינטף. שטיין אויף, וואַלגרינד. ווידער, דאָס זאל ניט ויסקומען ווי אַ גרויס האַנדלען. מיר קענען לויפן דעם פּראָגראַם איבער און איבער אַרויס פון וואַלגרינד און נישט זען קיין טעות סימפּטאָמס. אבער, לאָזן ס קוק אין אַ קליין ווערייישאַן פון דעם צו זען ווי זאכן קענען באַקומען טאַקע שלעכט. אַזוי, געגעבן, מיר זענען אַביוזינג זאכן מער ווי בלויז אַ ביסל אין דעם קאָד. מיר רע בלויז אַלאַקייטינג פּלאַץ אויף די קופּע פֿאַר צוויי סטרינגס די לענג פון קס50 ראַקס, דאָס מאָל, רימעמבערינג די / 0 כאַראַקטער. אבער דעמאָלט מיר וואַרפן אין אַ סופּער-לאַנג שטריקל אין דעם זכּרון פאַרשפּאַרן אַז ז איז פּוינטינג צו. וואָס ווירקונג וועט אַז האָבן אויף די זכּרון בלאָק אַז ג פונקטן צו? נו, אויב ה פונקטן צו זכּרון אַז ס נאָר שכייניש צו ד, קומענדיק נאָר נאָך אים, דעמאָלט מיר זאל האָבן געשריבן איבער טייל פון טי זאל ס 'לויפן דעם קאָד. קוק אין וואָס געטראפן. די סטרינגס מיר סטאָרד אין אונדזער קופּע בלאַקס ביידע ארויס צו האָבן געדרוקט אויס ריכטיק. גאָרנישט מיינט אומרעכט אין אַלע. אבער, לאָזן ס גיין צוריק אין אונדזער קאָד און באַמערקונג אויס די שורה ווו מיר קאָפּיע קס50 ראַקס אין די רגע זכּרון בלאָק, שפּיציק צו דורך ג. איצט, ווען מיר לויפן דעם קאָד מיר זאָל נאָר זען די אינהאַלט פון די ערשטער זכּרון בלאָק דרוקן אויס. וואָו, אַפֿילו כאָטש מיר האבן ניט Str קאָפּיע קיין אותיות אין די רגע קופּע פאַרשפּאַרן, דער איין שפּיציק צו דורך ה, מיר באַקומען אַ דרוקן אויס. טאקע, די שטריקל מיר סטאַפט אין אונדזער ערשטער פאַרשפּאַרן אָווערראַן דער ערשטער פאַרשפּאַרן און אין די רגע בלאָק, מאכן אַלץ ויסקומען נאָרמאַל. וואַלגרינד, כאָטש, דערציילט אונדז די אמת געשיכטע. עס מיר גיין. אַלע פון ​​יענע פאַרקריפּלט לייענט און שרייבט. זאל ס קוק בייַ אַ בייַשפּיל פון אן אנדער מין פון טעות. דאָ מיר טאָן עפּעס אלא נעבעך. מיר כאַפּן פּלאַץ פֿאַר אַ ינט אויף די קופּע, און מיר ינישאַלייז אַ ינט טייַטל - פּ - צו פונט צו אַז פּלאַץ. אבער, בעת אונדזער טייַטל איז ינישאַלייזד, די דאַטן וואָס עס ס פּוינטינג צו נאָר האט וועלכער אָפּפאַל איז אין אַז טייל פון די קופּע. אַזוי ווען מיר מאַסע אַז דאַטן אין ינט איך, מיר טעקניקלי ינישאַלייז איך, אָבער מיר טאָן אַזוי מיט אָפּפאַל דאַטן. די רופן צו פעסטשטעלן, וואָס איז אַ האַנטיק דיבאַגינג מאַקראָו דיפיינד אין די אַפּטלי געהייסן פעסטשטעלן ביבליאָטעק, וועט אַבאָרט די פּראָגראַם אויב זייַן פּרובירן צושטאַנד פיילז. וואָס איז, אויב איך איז נישט 0. דיפּענדינג אויף וואָס איז געווען אין די קופּע פּלאַץ, שפּיציק צו דורך פּ, דעם פּראָגראַם זאל אַרבעטן מאל און פאַרלאָזן אין אנדערע מאל. אויב עס אַרבעט, מיר רע נאָר געטינג מאַזלדיק. דער קאַמפּיילער וועט נישט כאַפּן דעם טעות, אָבער וואַלגרינד זיכער וועט. עס מיר זען די טעות סטעמינג פון אונדזער נוצן פון וואָס אָפּפאַל דאַטן. ווען איר אַלאַקייט קופּע זכּרון אָבער טאָן ניט דעאַללאָקאַטע עס אָדער פֿרייַ עס, וואָס איז גערופן אַ רינען. פֿאַר אַ קליין, קורץ-געלעבט פּראָגראַם וואָס לויפט און מיד עקסאַץ, ליקס זענען פערלי ומשעדלעך, אָבער פֿאַר אַ פּרויעקט פון גרעסערע נומער און / אָדער לאָנדזשעוואַטי, אַפֿילו אַ קליין רינען קענען קאַמפּאַונד אין עפּעס הויפּט. פֿאַר קס50, מיר טאָן דערוואַרטן איר צו נעמען קעיר פון פריינג אַלע פון ​​די קופּע זכּרון אַז איר אַלאַקייט, זינט מיר ווילן איר צו בויען די סקילז צו רעכט שעפּן די מאַנואַל פּראָצעס פארלאנגט דורך סי צו טאָן אַזוי, דיין פּראָגראַם זאָל האָבן אַן פּינטלעך איינער-צו-איינער קאָרעספּאָנדענץ צווישן מאַללאָק און פֿרייַ רופט. גליק, וואַלגרינד קענען העלפן איר מיט זכּרון ליקס אויך. דאָ איז אַ ליקי פּראָגראַם גערופן לעאַק.ק אַז אַלאַקייץ אָרט אויף דער קופּע, שרייבט צו עס, אָבער טוט נישט פֿרייַ עס. מיר צונויפנעמען עס מיט מאַכן און לויפן עס אונטער וואַלגרינד, און מיר זען אַז, בשעת מיר האָבן קיין זכּרון ערראָרס, מיר טאָן האָבן איין רינען. עס זענען 16 ביטעס באשטימט פאַרפאַלן, טייַטש אַז די טייַטל צו אַז זכּרון איז געווען נישט אין פאַרנעם ווען די פּראָגראַם עגזאַטיד. איצט, וואַלגרינד טוט נישט געבן אונדז אַ טאָן פון אינפֿאָרמאַציע וועגן די רינען, אָבער אויב מיר נאָכגיין דעם ביסל טאָן אַז עס גיט אַראָפּ צו די דנאָ פון זייַן מעלדונג צו ריראַן מיט - רינען-טשעק = פול צו זען די פול פרטים פון ליקט זכּרון, מיר וועט באַקומען מער אינפֿאָרמאַציע. איצט, אין די קופּע קיצער, וואַלגרינד דערציילט אונדז ווו די זכּרון וואָס איז פאַרפאַלן איז טכילעס אַלאַקייטיד. פּונקט ווי מיר וויסן פון איר זוכט אין די מקור קאָד, וואַלגרינד ינפאָרמז אונדז אַז מיר ליקט די זכּרון אַלאַקייטיד מיט אַ רופן צו מאַללאָק אויף שורה 8 פון לעאַק.ק אין דער הויפּט פֿונקציע. שיין ניפטי. וואַלגרינד קאַטאַגערייזיז ליקס ניצן די תּנאָים: באשטימט פאַרפאַלן - דאָס איז קופּע אַלאַקייטיד זכּרון צו וואָס די פּראָגראַם ניט מער האט אַ טייַטל. וואַלגרינד ווייסט אַז איר אַמאָל געהאט די טייַטל אָבער האָבן זינט פאַרפאַלן שפּור פון אים. דעם זכּרון איז באשטימט ליקט. מינאַצאַד פאַרפאַלן - דאָס איז קופּע אַלאַקייטיד זכּרון צו וואָס דער בלויז פּוינטערז צו עס אויך זענען פאַרפאַלן. פֿאַר בייַשפּיל, אויב איר פאַרפאַלן דיין טייַטל צו דער ערשטער נאָדע פון ​​אַ לינגקט רשימה, דעריבער דער ערשטער נאָדע זיך וואָלט זייַן באשטימט פאַרפאַלן, בשעת קיין סאַבסאַקוואַנט נאָודז וואָלט זייַן מינאַצאַד פאַרפאַלן. עפשער פאַרפאַלן - דאָס איז קופּע אַלאַקייטיד זכּרון צו וואָס וואַלגרינד קענען ניט זייַן זיכער צי עס איז אַ טייַטל אָדער נישט. נאָך ריטשאַבאַל איז קופּע אַלאַקייטיד זכּרון צו וואָס די פּראָגראַם נאָך האט אַ טייַטל אין אַרויסגאַנג, וואָס טיפּיקלי מיטל אַז אַ גלאבאלע בייַטעוודיק פונקטן צו עס. צו טשעק פֿאַר די ליקס, איר וועט אויך האָבן צו אַרייַננעמען די אָפּציע - נאָך-ריטשאַבאַל = יאָ אין דיין ינוואַקיישאַן פון וואַלגרינד. די פאַרשידענע פאלן זאל דאַרפן פאַרשידענע סטראַטעגיעס פֿאַר רייניקונג זיי אַרויף, אָבער ליקס זאָל זייַן ילימאַנייטאַד. ליידער, פיקסיר ליקס קענען זייַן שווער צו טאָן, זינט פאַלש רופט צו פֿרייַ קענען קלאַפּ אַרויף דיין פּראָגראַם. פֿאַר בייַשפּיל, אויב מיר קוקן אין ינוואַליד_פרעע.ק, מיר זען אַ בייַשפּיל פון שלעכט זכּרון דעאַללאָקאַטיאָן. וואָס זאָל זייַן אַ איין רופן צו פֿרייַ די גאנצע בלאָק פון זכּרון שפּיציק צו דורך ינט_בלאָקק, האט אַנשטאָט ווערן אַן פּרווון צו פֿרייַ יעדער ינט-סייזד אָפּטיילונג פון די זכּרון ינדיווידזשואַלי. דאס וועט פאַרלאָזן קאַטאַסטראָפיקאַללי. בום! וואָס אַ טעות. דאס איז באשטימט נישט גוט. אויב איר ניטאָ סטאַק מיט דעם מין פון טעות, כאָטש, און איר טאָן ניט וויסן ווו צו קוקן, פאַלן צוריק אויף דיין נייַ בעסטער פרייַנד. איר געסט עס - וואַלגרינד. וואַלגרינד, ווי שטענדיק, ווייסט פּונקט וואָס ס אַרויף. די אַללאָק און פֿרייַ קאַונץ טאָן ניט גלייַכן אַרויף. מיר ווע גאַט 1 אַללאָק און 4 פריז. און וואַלגרינד אויך דערציילט אונדז ווו דער ערשטער שלעכט פֿרייַ רופן - דער איינער אַז טריגערד די בלאָואַפּ - איז קומענדיק פון - שורה 16. ווי איר זען, שלעכט רופט צו פֿרייַ זענען טאַקע שלעכט, אַזוי מיר רעקאָמענדירן לעטינג דיין פּראָגראַם רינען בשעת איר ניטאָ ארבעטן אויף געטינג די פאַנגקשאַנאַליטי ריכטיק. אָנהייבן זוכן פֿאַר ליקס בלויז נאָך דיין פּראָגראַם איז ארבעטן רעכט, אָן קיין אנדערע ערראָרס. און אַז ס אַלע מיר ווע גאַט פֿאַר דעם ווידעא. איצט וואָס זענען איר ווארטן פֿאַר? גיין לויפן וואַלגרינד אויף דיין מגילה רעכט איצט. מייַן נאָמען איז נאַטע האַרדיסאָן. דאס איז קס50. [CS50.TV]