【发布时间】:2015-06-09 04:41:57
【问题描述】:
如果我执行以下操作,
int* p = new int(10);
std::shared_ptr<int>(p);
delete p;
这里发生了什么?删除原始指针后shared_ptr 是否无效?这种情况下有什么办法可以保证内存访问安全吗?
【问题讨论】:
-
请问您为什么需要这样做?我的意思是为什么不首先使用
shared_ptr -
我有一个以 shared_ptr 作为参数的函数。我只是想找出如果 API 的客户端像上面那样做愚蠢的事情,我的函数会出现异常的情况,并看看我的函数中是否可以做任何事情来阻止这种情况的发生。有什么想法吗?
-
不,如果您的客户决定朝自己的脚开枪,您无能为力。
-
有什么可以做的吗?我倾向于怀疑它。有志者事竟成。
标签: c++ c++11 segmentation-fault shared-ptr raw-pointer