std::shared_ptr<TimeUtils> timeUtils_;不使用make_shared可以吗?
时间: 2024-09-17 22:02:57 浏览: 37
C++11 std::shared_ptr总结与使用示例代码详解
`std::shared_ptr<TimeUtils> timeUtils_`是一个智能指针,用于管理`TimeUtils`对象的生命周期。`make_shared`是一个方便的工厂函数,它会在内存堆上动态分配空间,并返回一个指向新分配对象的共享指针。不直接使用`make_shared`也是可行的,你可以这样做:
```cpp
std::shared_ptr<TimeUtils> timeUtils(new TimeUtils());
```
这里手动创建了一个`TimeUtils`对象,并将其所有权转移到`shared_ptr`。但这意味着你需要自行管理内存分配(如检查`new`后的`nullptr`),并且如果忘记显式删除对象,可能导致内存泄漏。
如果不希望手动管理内存,你可以选择以下方式:
```cpp
// 如果需要默认构造函数
TimeUtils* timeUtils = new TimeUtils();
std::shared_ptr<TimeUtils> sharedPtr(timeUtils);
// 或者指定构造函数参数
TimeUtils* timeUtils = new TimeUtils(parameters);
std::shared_ptr<TimeUtils> sharedPtr(timeUtils, /* 销毁回调 */);
```
但是,推荐使用`make_shared`,因为它简化了内存管理,防止了一些常见的错误。
阅读全文