C++里怎么样让类对象删除时自动释放动态分配的内存?
2023-09-14 09:10:36 时间
经常有这样的需求,在一个类里一些成员变量需要动态地分配内存,以前是把这个成员声明为指针,然后在构造函数里指定为NULL类型,然后在析构函数里判断这个指针是否分配了内存,如果分配了就进行删除。这种方式需要人工来做,工作量有点大,能否有更加高效的,能否有偷赖的方式呢?这是有的,如下的例子:
#include <memory>
class widget
{
private:
std::unique_ptr<int> data;
public:
widget(const int size) { data = std::make_unique<int>(size); }
void do_something() {}
};
void functionUsingWidget() {
widget w(1000000); // lifetime automatically tied to enclosing scope
// constructs w, including the w.data gadget member
// ...
w.do_something();
// ...
} // automatic destruction and deallocation for w and w.data
在这里自动地分配1000000个int,当w对象不要时,就自动删除了。是利益于使用std::unique_ptr,从这里就可以学习到这个智能指针的使用了,它主要用来私有的数据成员。
相关文章
- C++内存管理(堆栈内存的区别、==和equal的区别)
- C++内存池的实现和原理(二)
- 【C/C++学院】0813-C与CPP不同以及命名空间简介/函数重载与函数默认参数/泛型auto/Newdelete
- 【C/C++学院】0723-32位与64位/调戏窗口程序/数据分离算法/内存检索/二分查找法/myVC
- C++内存分配方式
- C++ 对象的内存布局(下)
- c++ 使用json的库。cJSON
- 《安富莱嵌入式周报》第293期:SEGGER开源其C/C++库源码emRun,丰富EMC电磁兼容资,OTA开源组件,2022 Github全球报告,内存安全指南
- Puredev MemPro 1.6 C++ 内存分析器
- C++数据结构--数组类实现
- 【华为云技术分享】技术干货丨通过wrap malloc定位C/C++的内存泄漏问题
- Effective C++ 条款43
- 【 华为OD机试 2023】猜字谜(C++ Java JavaScript Python)
- C++之技巧篇事件注册与发布
- C++ 一个数组只有两个不同的数出现了奇数次,请找出这两个数
- C++替换空格
- C++ 命名空间 实战(一)嵌套的命名空间
- C++继承时的对象内存位置(一)
- C++友元函数和友元类(一)
- C++ new和delete(C++动态分配和释放内存)
- C语言之extern “C“之C与C++混用(三)
- 100元的C++软件开发培训班
- 使用Windbg定位Windows C++程序中的内存泄露
- 实例详解C++程序的五大内存分区
- C++11 强类型枚举
- C# 获取C++内存
- C++内存管理之unique_ptr
- PAT 1137 C++ 版
- 使用Windbg定位Windows C++程序中的内存泄露
- 使用Windbg排查C++程序调用IsBadReadPtr或IsBadWritePtr引发内存访问违例问题
- C/C++面试题分享「虚函数、多态、内存管理与软件调试篇」
- C++中new申请内存失败抛出异常的处理
- C++堆内存错误:CRT detected that the application wrote to memory after end of heap buffer