在我std::shared_ptr
的软件开发过程中,我遇到了几个让我怀疑内存管理的案例。我有一个第三方库,它总是给我来自函数的原始指针,并且在我的代码中我将它们转换为std::shared_ptr
(来自 std 而不是来自 boost。顺便说一下,两者之间有什么区别?)。所以假设我有以下代码:
ClassA* raw = new ClassA;
std::shared_ptr<ClassA> shared(raw);
当共享指针超出范围时会发生什么(假设它是在函数中本地声明的,现在我正在退出函数)。该ClassA
对象是否仍然存在,因为原始指针指向它?