create_memory_block_externT_create_memory_block_externCreateMemoryBlockExternCreateMemoryBlockExterncreate_memory_block_extern创建内存块外部(算子)
名称
create_memory_block_externT_create_memory_block_externCreateMemoryBlockExternCreateMemoryBlockExterncreate_memory_block_extern — 从外部指针创建内存块。
警告
不建议在 HDevelop 中使用 create_memory_block_externcreate_memory_block_externCreateMemoryBlockExternCreateMemoryBlockExternCreateMemoryBlockExterncreate_memory_block_extern
算子。
签名
描述
create_memory_block_externcreate_memory_block_externCreateMemoryBlockExternCreateMemoryBlockExternCreateMemoryBlockExterncreate_memory_block_extern 创建内存块并返回其句柄 MemoryBlockHandleMemoryBlockHandleMemoryBlockHandleMemoryBlockHandlememoryBlockHandlememory_block_handle。PointerPointerPointerPointerpointerpointer 是指向内存块起始位置的数据指针。SizeSizeSizeSizesizesize 控制内存块的字节大小。FreeFunctionFreeFunctionFreeFunctionFreeFunctionfreeFunctionfree_function 是可选的回调函数,用于释放 PointerPointerPointerPointerpointerpointer 所指向的内存。该函数必须具有以下签名
void FreeFunction(void* ptr);
并在删除 MemoryBlockHandleMemoryBlockHandleMemoryBlockHandleMemoryBlockHandlememoryBlockHandlememory_block_handle 时采用 __cdecl 调用约定调用。因此 HALCON 将在此情况下获得内存所有权,并通过回调函数释放内存。若删除 MemoryBlockHandleMemoryBlockHandleMemoryBlockHandleMemoryBlockHandlememoryBlockHandlememory_block_handle 时无需释放内存(即 HALCON 不拥有该内存),可传递 NULL 指针。
注意
此算子不会复制任何数据。若需复制,可使用
create_memory_block_extern_copycreate_memory_block_extern_copyCreateMemoryBlockExternCopyCreateMemoryBlockExternCopyCreateMemoryBlockExternCopycreate_memory_block_extern_copy。
执行信息
- 多线程类型:可重入(与非独占算子并行运行)。
- 多线程作用域:全局(可从任何线程调用)。
- 未采用并行化处理。
此算子返回一个句柄。请注意,即使该句柄被用作特定算子的输入参数,这些算子仍可能改变此句柄类型的实例状态。
参数
PointerPointerPointerPointerpointerpointer (输入控制) pointer → HTupleintHTupleHtuple (integer) (IntPtr) (Hlong) (Hlong)
内存块的数据指针。
SizeSizeSizeSizesizesize (输入控制) integer → HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)
内存块的大小。
FreeFunctionFreeFunctionFreeFunctionFreeFunctionfreeFunctionfree_function (输入控制) pointer → HTupleintHTupleHtuple (integer) (IntPtr) (Hlong) (Hlong)
释放内存块的函数。
默认值:
0
MemoryBlockHandleMemoryBlockHandleMemoryBlockHandleMemoryBlockHandlememoryBlockHandlememory_block_handle (输出控制) memory_block → HMemoryBlock, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)
内存块的句柄。
结果
如果参数有效,算子 create_memory_block_externcreate_memory_block_externCreateMemoryBlockExternCreateMemoryBlockExternCreateMemoryBlockExterncreate_memory_block_extern 返回值 2 (H_MSG_TRUE)。如有必要,则抛出异常。
可能的后继
get_memory_block_ptrget_memory_block_ptrGetMemoryBlockPtrGetMemoryBlockPtrGetMemoryBlockPtrget_memory_block_ptr
替代
create_memory_block_extern_copycreate_memory_block_extern_copyCreateMemoryBlockExternCopyCreateMemoryBlockExternCopyCreateMemoryBlockExternCopycreate_memory_block_extern_copy
模块
基础