使用共享指针进行 运行 时间数组分配
Using shared pointers for run time array allocations
我有一个 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++ 程序,我需要为日志 (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);