解决的方法是使用unique_ptr来管理动态内存,只要unique_ptr指针创建成功,其析构函数都会被调用。确保动态资源被释放。
void Func()
{
unique_ptr<int> p(new int(5));
// ...(可能会抛出异常)
}
2、返回函数内动态申请资源的所有权
示例如下:
unique_ptr<int> Func(int p)
{
unique_ptr<int> pInt(new int(p));
return pInt; // 返回unique_ptr
}
int main() {
int p = 5;
unique_ptr<int> ret = Func(p);
cout << *ret << endl;
// 函数结束后,自动释放资源
}
3、在容器中保存指针
int main() {
vector<unique_ptr<int>> vec;
unique_ptr<int> p(new int(5));
vec.push_back(std::move(p)); // 使用移动语义
}
4、管理动态数组
标准库提供了一个可以管理动态数组的unique_ptr版本。
int main() {
unique_ptr<int[]> p(new int[5] {1, 2, 3, 4, 5});
p[0] = 0; // 重载了operator[]
}
总结
到此这篇关于C++11智能指针中的 unique_ptr实例详解的文章就介绍到这了,更多相关C++11智能指针unique_ptr内容请搜索易采站长站以前的文章或继续浏览下面的相关文章希望大家以后多多支持易采站长站!










