void test(int *q)
{
std::shared_ptr<const int> ptr(q);
std::cout << *ptr << std::endl;
}
int main(int argc,char *argv[])
{
int *p = new int(3);
test(p);
delete p;
return 0;
}
请问这样会造成内存的重复释放吗?
个人理解:智能指针ptr在函数周期结束后会被释放掉,所以会释放ptr所指向的内存,而主函数中delete会再次释放,但是这段代码能跑通,最后输出3