C++ 智能指针管理资源

用 unique_ptr 表达独占所有权,作用域结束自动释放。

C++cpp
cpp
1#include <memory>2#include <iostream>34class Buffer {5public:6  Buffer(std::size_t size) : data_(new char[size]) {}7  ~Buffer() { delete[] data_; }8private:9  char* data_;10};1112int main() {13  auto buf = std::make_unique<Buffer>(1024);14  std::cout << "allocated" << std::endl;15  return 0;16}

关键点说明

  • make_unique 避免手写 new,异常发生时也不会泄漏。
  • 不要用同一个裸指针构造多个智能指针。

使用建议

复制之后先在本地的示例工程里跑一遍,确认运行结果符合预期,再根据自己的业务调整命名与结构。直接粘贴到大项目里容易忽略上下文差异。