智能指针及数组操作
发布时间
阅读量:
阅读量
在某些情况下,需要通过局部函数在堆内存中分配数组空间,并将其返回供外部调用。例如,在Windows平台的编程实践中,编码转换操作经常涉及此类需求。当编码转换的返回结果通常是在堆上分配的,比如返回一个char类型时,若外部使用者在使用完毕后未执行相应的释放操作,则极易引发内存泄漏问题。实际上,char类型在堆内存中对应的是一个字符数组char[]。为避免此类问题,可将返回值存储于智能指针中,从而实现自动销毁的功能(如shared_ptr或unique_ptr)。
C++11标准中的智能指针用于管理数组对象
//C++11的<memory>中有一整套智能指针,
//完全可以避免写手动的delete代码,
//但是它默认使用delete删除对象,
//如果是数组对象,需要指定自定义的删除方法,支持delete[]
std::shared_ptr<int> p(new int[10],
[](int* p){
delete[] p;
});
//或者使用helper
std::shared_ptr<int> p(new int[10],std::default_delete<int[]>());
全部评论 (0)
还没有任何评论哟~
