Տարբերությունը աղբահանի և կործանարարի միջև

Բովանդակություն:

Տարբերությունը աղբահանի և կործանարարի միջև
Տարբերությունը աղբահանի և կործանարարի միջև

Video: Տարբերությունը աղբահանի և կործանարարի միջև

Video: Տարբերությունը աղբահանի և կործանարարի միջև
Video: Ինչու են ամուսինները դավաճանում և ինչպես կանխել ընտանեկան դավաճանությունը 2024, Նոյեմբեր
Anonim

Հիմնական տարբերություն – Աղբահանն ընդդեմ կործանողի

Ծրագրավորման լեզուների մեծ մասն աջակցում է օբյեկտի վրա հիմնված ծրագրավորում: Այն օբյեկտների օգտագործմամբ ծրագիր կամ ծրագրաշար ստեղծելու մեթոդաբանություն է: Օբյեկտը ստեղծվում է դասի միջոցով, ուստի այն դասի օրինակ է: Դասը տալիս է նկարագրությունը, թե ինչից պետք է բաղկացած լինի օբյեկտը: Օբյեկտներ ստեղծելիս հիշողությունը հատկացվում է օբյեկտներին։ Հատկացված հիշողությունը պետք է թողարկվի ծրագրի կատարման վերջում, որպեսզի այդ հիշողությունը նորից օգտագործվի որևէ այլ օբյեկտի համար: Ծրագրավորման լեզուները, ինչպիսիք են Java-ն և C. NET-ը, օգտագործում են աղբի հավաքիչներ հիշողության կառավարման համար, մինչդեռ այնպիսի լեզուները, ինչպիսիք են C-ն և C++-ը, պահանջում են ծրագրավորողից կառավարել հիշողության կառավարումը:Հիշողության անհրաժեշտ քանակությունը պետք է հատկացվի, իսկ կատարման վերջում հիշողությունը թողարկվի։ Աղբի հավաքիչը և կործանիչը օգտագործվում են հիշողությունը ազատելու համար: Աղբահանի և կործանիչի միջև հիմնական տարբերությունն այն է, որ աղբահանիչը ծրագրաշար է, որն իրականացնում է հիշողության ավտոմատ կառավարում, մինչդեռ դեստրուկտորը հատուկ մեթոդ է, որը կոչվում է աղբահանի կողմից օբյեկտի ոչնչացման ժամանակ::

Ի՞նչ է աղբահանը:

Ծրագրավորման որոշ լեզուներ կառավարել են կոդային միջավայրեր: Java և C ծրագրավորման լեզուներում կատարվում է հիշողության ավտոմատ կառավարում։ Ծրագրավորողին անհրաժեշտ չէ ազատել օբյեկտների կողմից օգտագործվող հիշողությունը: Նրանց համար ավելի հեշտ է զարգացնել նույնիսկ բարդ համակարգեր, քանի որ հիշողության կառավարումն իրականացվում է ավտոմատ կերպով: Ծրագրավորման լեզուներում, ինչպիսիք են C, C++ և Objective C-ը, ծրագիրը պետք է թողարկի օբյեկտների հիշողությունը դեպի համակարգ: Լեզուները, ինչպիսիք են Java-ն և C-ը, կարող են պարզել այն օբյեկտները, որոնք այլևս չեն օգտագործվում:Այնուհետև նրանք թողարկում են այդ օբյեկտների համար հատկացված հիշողությունը դեպի համակարգ:

Ծրագրավորման C և Java լեզուներում, եթե կա Student կոչվող դաս, ապա օբյեկտ կարող է ստեղծվել Student s=new Student (); «Նոր»-ն օգտագործվում է Ուսանողական դասի օրինակ ստեղծելու համար: Այն համակարգում հիշողություն է հատկացնում: «s»-ը վերաբերում է այդ օբյեկտի համար հատկացված հիշողության բլոկին: Լեզվական միջավայրերը պարզում են՝ օբյեկտներն օգտագործվում են, թե ոչ: Եթե դրանք հետագայում չօգտագործվեն, ապա հիշողությունն ազատվում է և կարող է օգտագործվել ավելի ուշ:

Տարբերությունը աղբահանողի և կործանարարի միջև
Տարբերությունը աղբահանողի և կործանարարի միջև

Նկար 01. Աղբահան և կործանիչ

Ծրագիր գործարկելիս հիշողության բլոկները տեղաբաշխվում են համակարգի հիշողության լողավազանից: Այնուհետեւ ծրագիրը կատարում է առաջադրանքները՝ օգտագործելով այդ հիշողությունը։Երբ ծրագրի կատարումն ավարտվում է, աղբահանիչը պարզում է՝ ծրագրի համար հատկացված հիշողության բլոկները կարևոր են, թե ոչ: Եթե դրանք պարտադիր չեն, այդ հիշողության բլոկները վերադարձվում են համակարգ: Այսպիսով, աղբահանը կարող է հետևել ծրագրում ստեղծված օբյեկտներին։ Հիշողության բլոկները, որոնք այլևս չեն պահանջվում, հետ են ուղարկվում համակարգի հիշողության լողավազան: Այս գործընթացի հիմնական առավելությունն այն է, որ ծրագրավորողը պետք չէ կենտրոնանալ հիշողության տեղաբաշխման վրա: Այն հավասարակշռում է արդյունավետությունը և հիշողության օգտագործումը:

Ի՞նչ է կործանիչը:

Destructor-ը դասի հատուկ անդամ ֆունկցիա է: Այն կանչվում է ամեն անգամ, երբ օբյեկտը դուրս է գալիս շրջանակից: Օբյեկտը կարող է ոչնչացվել, երբ ֆունկցիան ավարտվում է կամ ծրագրի կատարման վերջում: Destructor-ն ունի նույն անունը, ինչ դասի անվանումը: Կոնստրուկտորն օգտագործվում է օբյեկտը ստեղծելու համար: Այն կարող է ընդունել պարամետրեր: Կոնստրուկտորը կարող է ունենալ նաև վերադարձի արժեքներ։ Բայց Destructor-ում չկա վերադարձի տեսակ կամ ընդունող պարամետրեր:Դասը կարող է բաղկացած լինել միայն մեկ կործանիչից: Դեստրուկտորը նշվում է՝ օգտագործելով tilde նշանը: Եթե դասարանի անունը Student է, ապա ապակառուցիչը ~Student () {} է։

Աղբահանը փնտրում է այն առարկաները, որոնք այլևս չեն պահանջվում: Այն ապահովում է, որ այն օբյեկտները, որոնք այլևս չեն օգտագործվում ծրագրի կողմից, պետք է ոչնչացվեն: Այն կոչ է անում քանդողին ազատել հիշողությունը և տեղաբաշխել ռեսուրսները: Դեստրուկտորները օգտակար են հիշողությունը թողարկելու, ֆայլերը փակելու, ցանցային ռեսուրսները թողարկելու և տվյալների բազայի կապերը փակելու համար: Ծրագրավորման լեզուների մեծ մասում անհրաժեշտ չէ գրել destructor, քանի որ աղբահանողն ինքնուրույն է կանչում լռելյայն կոնստրուկտորին: Եթե ծրագրավորողը դինամիկ հիշողության բաշխում է արել՝ օգտագործելով ցուցիչներ C++ լեզվով, ապա նա պետք է գրի կործանիչ՝ հիշողությունը թողարկելու համար, նախքան օբյեկտի ոչնչացումը:

Ո՞րն է նմանությունը աղբահանի և կործանարարի միջև:

Եվ աղբահավաքիչը և կործանիչը օգտագործվում են հիշողությունը թողարկելու համար, որն այլևս չի պահանջվում ծրագրի համար:

Ի՞նչ տարբերություն կա աղբահանի և կործանարարի միջև:

Աղբ հավաքողն ընդդեմ կործանողի

Աղբի հավաքիչը ծրագրաշար է, որն իրականացնում է հիշողության ավտոմատ կառավարում: Destructor-ը հատուկ մեթոդ է, որը կոչվում է աղբահանի կողմից օբյեկտի ոչնչացման ժամանակ:
Տեսակ
Աղբահանը ծրագրաշար է: Քայքայիչը մեթոդ է:

Ամփոփում – Աղբահավաքն ընդդեմ կործանողի

Աղբի հավաքիչ և կործանիչ երկու տերմիններ են, որոնք կապված են հիշողության ազատման հետ: Այս հոդվածում քննարկվեց աղբահանողի և կործանարարի միջև եղած տարբերությունը: Աղբահանի և կործանարարի միջև տարբերությունն այն է, որ աղբահանիչը ծրագրաշար է, որն իրականացնում է հիշողության ավտոմատ կառավարում, մինչդեռ դեստրուկտորը հատուկ մեթոդ է, որը կոչվում է աղբահանի կողմից օբյեկտի ոչնչացման ժամանակ:

Ներբեռնեք Աղբահավաքն ընդդեմ կործանիչի PDF-ը

Դուք կարող եք ներբեռնել այս հոդվածի PDF տարբերակը և օգտագործել այն անցանց նպատակներով՝ ըստ մեջբերումների: Խնդրում ենք ներբեռնել PDF տարբերակը այստեղ՝ Տարբերությունը աղբահանի և կործանիչի միջև

Խորհուրդ ենք տալիս: