Sobes.tech
Junior — Middle
111

Koje su glavne poteškoće ili zamke povezane sa korišćenjem pametnih pokazivača u programiranju?

Компаније где су питане
СБЕРСБЕР

Одговор од АИ

sobes.tech АИ

Glavne poteškoće pri korišćenju pametnih pokazivača:

  • Ciklične reference: ako dva objekta međusobno poseduju putem shared_ptr, nikada neće biti oslobođeni, što izaziva curenje memorije. Za rešavanje koristi se weak_ptr.
  • Neispravna upotreba unique_ptr: pokušaj kopiranja unique_ptr će izazvati grešku, treba koristiti pomeranje.
  • Preopterećenje resursa: često kreiranje i uništavanje pametnih pokazivača može uticati na performanse.
  • Nejasno vlasništvo: uz loš dizajn, teško je razumeti ko poseduje objekat i kada će biti uništen.

Primer ciklične reference:

struct B; 
struct A {
    std::shared_ptr<B> b_ptr;
};
struct B {
    std::shared_ptr<A> a_ptr;
};

// Ovo će stvoriti ciklus, objekti neće biti automatski obrisani.

Da bi se to izbeglo, koristi se std::weak_ptr na jednoj od strana.