Sobes.tech
Junior — Middle

C++-ში სტანდარტული არათავსებული მაჩვენებელი და ჭკვიანი მაჩვენებელი std::unique_ptr შორის რა განსხვავებებია?

sobes.tech AI

პასუხი AI-სგან

C++-ში სტანდარტული უქმნელი მაჩვენებლის (raw pointer) და ჭკვიანი მაჩვენებლის std::unique_ptr ძირითადი განსხვავებები:

  • ობიექტის სიცოცხლის ხანგრძლივობის მართვა:

    • Raw pointer უბრალოდ ინახავს მისამართს, მაგრამ არ მართავს ობიექტის სიცოცხლის ხანგრძლივობას. საჭიროა ხელით გამოიძახოთ delete.
    • std::unique_ptr ავტომატურად წაშლის ობიექტს, როდესაც ის გამოდის სკოპიდან, რაც თავიდან აცილებს მეხსიერების გაჟონვას.
  • მფლობელობა:

    • Raw pointer ობიექტს არ ფლობს, შეუძლია თავისუფლად იყოს კოპირებული და გადაცემა.
    • std::unique_ptr ფლობს ობიექტს ექსკლუზიურად, კოპირება აკრძალულია, მხოლოდ გადატანა შესაძლებელია.
  • უსაფრთხოება:

    • Raw pointer შეიძლება გამოიწვიოს შეცდომები, თუ დაგავიწყდათ ობიექტის წაშლა ან გამოიყენეთ მას შემდეგ, რაც წაიშალა.
    • std::unique_ptr ეხმარება ამ შეცდომების თავიდან აცილებაში ავტომატური მართვის მეშვეობით.

მაგალითი std::unique_ptr-ის გამოყენების:

#include <memory>

std::unique_ptr<int> ptr = std::make_unique<int>(42);
// ptr ავტომატურად წაშლის ობიექტს, როდესაც ის გამოდის სკოპიდან

ამ გზით, std::unique_ptr ადვილად მართავს დინამიკურ მეხსიერებას და ზრდის კოდის უსაფრთხოებას.