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