为什么此make_shared在两个单独的调用中分配相同的内存地址?
typedef struct {
int a;
int b;
int c;
} test_t;
void call_func()
{
std::shared_ptr<test_t> tst = std::make_shared<test_t>();
std::cout << "addr: " << tst << std::endl;
}
int main()
{
call_func();
call_func();
}
Run Code Online (Sandbox Code Playgroud)
Rem*_*eau 12
call_func()test_t在可用内存中创建一个新对象,并将其包装在中std::shared_ptr。退出范围时,test_t对象将被销毁。std::shared_ptrcall_func()
因此,当第一个调用call_func()退出时,它使用的内存已被释放,并且在第二个调用call_func()被调用时可以重新使用。
这是正常行为,无需担心。