c++ - 使用共享指针进行运行时数组分配

标签 c++ memory-management shared-ptr raii

我有一个 C++ 程序,我需要为日志 (char*) 分配内存。

我阅读了有关 std::shared_ptr 的内容,以及它们将如何在离开作用域后处理内存删除。

下面的代码会在作用域离开后自动释放日志缓冲区吗?

std::shared_ptr< char * > pLog = 
    std::shared_ptr< char * > ( new char[logLength+1] );

我知道这可能有点简单,但我不太确定如何确认它是否有效。

最佳答案

您可以考虑改用 std::unique_ptr。一旦离开范围,它将以更简单的方式处理内存删除。共享指针创建并维护一个特殊的描述符对象。对于简单的本地缓冲区,您不需要它。

auto buff = std::make_unique<char[]>(buffSize);

关于c++ - 使用共享指针进行运行时数组分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34244311/

相关文章:

c++ - 如何在 veins2.1 中更新车辆的路线?

java - 如何阅读冗长的 :GC output?

c - 释放分配给数组任意位置的内存

c++ - 为什么我们需要 enable_shared_from_this

c++ - 为什么 shared_ptr<> 必须分别为控制 block 和管理对象分配?

c++ - 如何从跟踪器响应中获取对等方的 IP 和端口

c++ - 设置C++中的默认浮点打印精度

c++ - 浮点类型的编译时操作

memory-management - 了解 CentOS 内存使用情况

c++ - 我可以将 std::make_shared 与没有参数构造函数的结构一起使用吗?