OpenCV 4.10.0
开源计算机视觉库
|
管理由多个缓冲区共享的内存块。 更多...
#include <opencv2/core/utils/buffer_area.private.hpp>
公共成员函数 | |
BufferArea (bool safe=false) | |
类构造函数。 | |
~BufferArea () | |
类析构函数。 | |
template<typename T > | |
void | allocate (T *&ptr, size_t count, ushort alignment=sizeof(T)) |
将指针绑定到本地区域。 | |
void | commit () |
分配内存并初始化所有绑定指针。 | |
void | release () |
释放所有内存并解除绑定所有指针。 | |
void | zeroFill () |
用零填充所有缓冲区。 | |
template<typename T > | |
void | zeroFill (T *&ptr) |
用零填充其中一个缓冲区。 | |
管理由多个缓冲区共享的内存块。
此类允许分配一个大的内存块,并将其拆分为多个较小的非重叠缓冲区。在安全模式下,每个缓冲区分配将独立执行,此模式允许使用 valgrind 或内存消毒器对动态内存访问进行检测。
可以在构造函数中明确开启安全模式。如果使用内存消毒器支持编译,或者在运行时使用环境变量 OPENCV_BUFFER_AREA_ALWAYS_SAFE
,安全模式也将启用。
使用示例
cv::utils::BufferArea::BufferArea | ( | bool | safe = false | ) |
类构造函数。
safe | 启用安全操作模式,每个分配将独立执行。 |
cv::utils::BufferArea::~BufferArea | ( | ) |
类析构函数。
所有分配的内存都将被释放。每个绑定指针都将重置为 NULL。
|
inline |
将指针绑定到本地区域。
BufferArea 将存储对指针的引用和分配参数,实际上拥有指针和分配的内存。此操作与运算符 new
具有相同的参数并执行相同的工作,但分配可以在 BufferArea::commit 调用期间的稍后时间执行。
ptr | 类型为 T 的指针的引用。必须为 NULL |
count | 要分配的对象数量,它与运算符 new 中的含义相同。 |
alignment | 分配内存的对齐方式。与运算符 new (C++17) 中的含义相同。必须可被 sizeof(T) 整除。必须是 2 的幂。 |
void cv::utils::BufferArea::commit | ( | ) |
分配内存并初始化所有绑定指针。
使用 BufferArea::allocate 绑定到区域的每个指针都将被初始化,并将被设置为指向具有请求大小和对齐方式的内存块。
void cv::utils::BufferArea::release | ( | ) |
释放所有内存并解除绑定所有指针。
所有内存都将被释放,所有指针都将重置为 NULL 并与区域解除绑定,允许再次调用 allocate
和 commit
。
void cv::utils::BufferArea::zeroFill | ( | ) |
用零填充所有缓冲区。
必须在使用此方法之前调用 BufferArea::commit
|
inline |