![]() |
OpenCV 4.12.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 |