![]() |
OpenCV 4.12.0
开源计算机视觉
|
自动分配缓冲区类。 更多...
#include <opencv2/core/utility.hpp>
公共类型 | |
| typedef _Tp | value_type |
公共成员函数 | |
| AutoBuffer () | |
| 默认构造函数 | |
| AutoBuffer (const AutoBuffer< _Tp, fixed_size > &buf) | |
| 复制构造函数 | |
| AutoBuffer (size_t _size) | |
| 构造函数,接受实际缓冲区大小 | |
| ~AutoBuffer () | |
| 析构函数。调用 deallocate() | |
| void | allocate (size_t _size) |
| 分配大小为 _size 的新缓冲区。如果 _size 足够小,则使用栈分配的缓冲区 | |
| _Tp * | data () |
| 返回指向实际缓冲区的指针,栈分配或堆分配 | |
| const _Tp * | data () const |
| 返回指向实际缓冲区的只读指针,栈分配或堆分配 | |
| void | deallocate () |
| 如果缓冲区是动态分配的,则释放它 | |
| operator _Tp * () | |
| 返回指向实际缓冲区的指针,栈分配或堆分配 | |
| operator const _Tp * () const | |
| 返回指向实际缓冲区的只读指针,栈分配或堆分配 | |
| AutoBuffer< _Tp, fixed_size > & | operator= (const AutoBuffer< _Tp, fixed_size > &buf) |
| 赋值运算符 | |
| void | resize (size_t _size) |
| 调整缓冲区大小并保留内容 | |
| size_t | size () const |
| 返回当前缓冲区大小 | |
保护属性 | |
| _Tp | buf [(fixed_size > 0) ? fixed_size :1] |
| 预分配缓冲区。至少 1 个元素以符合 C++ 标准要求 | |
| _Tp * | ptr |
| 指向实际缓冲区的指针,如果缓冲区足够小,则可以指向 buf | |
| size_t | sz |
| 实际缓冲区的大小 | |
自动分配缓冲区类。
该类用于函数和方法中的临时缓冲区。如果临时缓冲区通常很小(几 K 的内存),但其大小取决于参数,则在栈上创建一个小的固定大小的数组并在其足够大时使用它是有意义的。如果所需的缓冲区大小大于固定大小,则动态分配另一个足够大小的缓冲区并在处理后释放。因此,在典型情况下,当缓冲区大小较小时,没有与 malloc()/free() 相关的开销。同时,对处理的数据的大小没有限制。
这就是 AutoBuffer 所做的。模板采用 2 个参数 - 缓冲区元素的类型和栈分配的元素数量。以下是该类的使用方式
| _Tp cv::AutoBuffer< _Tp, fixed_size >::value_type |
| cv::AutoBuffer< _Tp, fixed_size >::AutoBuffer | ( | ) |
默认构造函数
|
显式 |
构造函数,接受实际缓冲区大小
| cv::AutoBuffer< _Tp, fixed_size >::AutoBuffer | ( | const AutoBuffer< _Tp, fixed_size > & | buf | ) |
复制构造函数
| cv::AutoBuffer< _Tp, fixed_size >::~AutoBuffer | ( | ) |
析构函数。调用 deallocate()
| void cv::AutoBuffer< _Tp, fixed_size >::allocate | ( | size_t | _size | ) |
分配大小为 _size 的新缓冲区。如果 _size 足够小,则使用栈分配的缓冲区
|
inline |
返回指向实际缓冲区的指针,栈分配或堆分配
|
inline |
返回指向实际缓冲区的只读指针,栈分配或堆分配
| void cv::AutoBuffer< _Tp, fixed_size >::deallocate | ( | ) |
如果缓冲区是动态分配的,则释放它
|
inline |
返回指向实际缓冲区的指针,栈分配或堆分配
|
inline |
返回指向实际缓冲区的只读指针,栈分配或堆分配
| AutoBuffer< _Tp, fixed_size > & cv::AutoBuffer< _Tp, fixed_size >::operator= | ( | const AutoBuffer< _Tp, fixed_size > & | buf | ) |
赋值运算符
| void cv::AutoBuffer< _Tp, fixed_size >::resize | ( | size_t | _size | ) |
调整缓冲区大小并保留内容
| size_t cv::AutoBuffer< _Tp, fixed_size >::size | ( | ) | const |
返回当前缓冲区大小
|
保护 |
预分配缓冲区。至少 1 个元素以符合 C++ 标准要求
|
保护 |
指向实际缓冲区的指针,如果缓冲区足够小,则可以指向 buf
|
保护 |
实际缓冲区的大小