Surowy wskaźnik C ++ i std :: shared_ptr
Pracuję zstd::shared_ptr
i podczas mojego rozwoju oprogramowania spotkałem kilka przypadków, które pozwoliły mi wątpić w zarządzanie pamięcią. Miałem bibliotekę innej firmy, która dawała mi zawsze surowe wskaźniki z funkcji, aw moim kodzie przekształcałem jestd::shared_ptr
(od std, a nie od boost. Przy okazji, jaka jest różnica między nimi?). Powiedzmy, że mam następujący kod:
ClassA* raw = new ClassA;
std::shared_ptr<ClassA> shared(raw);
Co dzieje się teraz, gdy współużytkowany wskaźnik wychodzi poza zakres (powiedzmy, że został zadeklarowany lokalnie w funkcji, a teraz wychodzę z funkcji). BędzieClassA
obiekt nadal istnieje, ponieważ wskazuje na niego surowy wskaźnik?