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 seweak_ptr. - Neispravna upotreba
unique_ptr: pokušaj kopiranjaunique_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.