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

时间:2015-12-12 19:58:43

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

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

我读到了std::shared_ptr以及一旦留下范围,他们将如何处理内存删除。

在保留范围后,下面的代码会自动释放日志缓冲区吗?

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

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

1 个答案:

答案 0 :(得分:1)

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

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