现代 C++ 内存管理

深入探讨现代 C++ 的内存管理最佳实践,包括智能指针、RAII 等核心技术。

本文摘要

深入探讨现代 C++ 的内存管理最佳实践,包括智能指针、RAII 等核心技术。

现代 C++ 提供了强大的内存管理工具,消除了大多数手动内存分配问题。

智能指针


#include <memory>

// 独占所有权 - 最常用
auto widget = std::make_unique<MyWidget>();

// 共享所有权 - 需要多个所有者时
auto sharedData = std::make_shared<Configuration>();

// 弱引用 - 打破循环引用
std::weak_ptr<Node> parent;

RAII 模式

资源获取即初始化,确保资源总是被释放:


class FileHandler {
    FILE* m_file;
public:
    FileHandler(const char* path) : m_file(fopen(path, "r")) {}
    ~FileHandler() { if (m_file) fclose(m_file); }

    // 删除复制,允许移动
    FileHandler(const FileHandler&) = delete;
    FileHandler& operator=(const FileHandler&) = delete;
    FileHandler(FileHandler&& other) noexcept : m_file(other.m_file) {
        other.m_file = nullptr;
    }
};

零原则

在现代 C++ 中,尽量让类不需要自定义析构函数、复制/移动构造函数或赋值运算符。优先使用智能指针和标准库容器来管理资源。

0 0 投票数
文章评级
订阅评论
提醒
guest

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理

0 评论
最多投票
最新 最旧
内联反馈
查看所有评论
0
希望看到您的想法,请您发表评论x