【发布时间】:2020-06-10 20:55:37
【问题描述】:
我正在使用一个函数(它是库的一部分),它返回一个原始的uint8_t* 指针,指向一些已在堆上分配并保存图像像素数据的内存。这个函数的调用者负责在指针上调用free。
我调用此函数的代码有许多提前终止的分支,因此我需要在很多时候调用free(buffer)。我认为如果我可以将缓冲区包装在unique_ptr 中会更好,这样当它超出范围时,内存会自动释放。
我怎样才能做到这一点?
作为参考,decleration 函数看起来像这样:uint8_t* getFrame()(我已经知道图像的宽度、高度和通道数以及缓冲区的长度);
【问题讨论】:
-
How do I use a custom deleter with a std::unique_ptr member? 中包含的任何智慧是否有任何帮助?
标签: c++ heap-memory smart-pointers unique-ptr raw-pointer