OpenCV 4.11.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 |