create_memory_block_externT_create_memory_block_externCreateMemoryBlockExternCreateMemoryBlockExterncreate_memory_block_extern (算子)
名称
create_memory_block_externT_create_memory_block_externCreateMemoryBlockExternCreateMemoryBlockExterncreate_memory_block_extern — 从外部指针创建内存块。
警告
It is not recommended to use the operator create_memory_block_externcreate_memory_block_externCreateMemoryBlockExternCreateMemoryBlockExternCreateMemoryBlockExterncreate_memory_block_extern
in HDevelop.
签名
描述
create_memory_block_externcreate_memory_block_externCreateMemoryBlockExternCreateMemoryBlockExternCreateMemoryBlockExterncreate_memory_block_extern creates a memory block and returns its
handle MemoryBlockHandleMemoryBlockHandleMemoryBlockHandleMemoryBlockHandlememoryBlockHandlememory_block_handle. PointerPointerPointerPointerpointerpointer is a data pointer to the
beginning of the memory block. SizeSizeSizeSizesizesize controls the size in bytes of the
memory block. FreeFunctionFreeFunctionFreeFunctionFreeFunctionfreeFunctionfree_function is an optional callback function that
frees the memory pointed to by PointerPointerPointerPointerpointerpointer. This function must have the
following signature
void FreeFunction(void* ptr);
and will be called using __cdecl calling convention when deleting
MemoryBlockHandleMemoryBlockHandleMemoryBlockHandleMemoryBlockHandlememoryBlockHandlememory_block_handle. Hence, HALCON gains ownership over the memory in
this case and releases the memory via the callback function. If the memory
shall not be released when deleting MemoryBlockHandleMemoryBlockHandleMemoryBlockHandleMemoryBlockHandlememoryBlockHandlememory_block_handle, i.e., HALCON
shall not own the memory, the NULL-Pointer can be passed.
注意
This operator does not copy any data. If a copy is required
create_memory_block_extern_copycreate_memory_block_extern_copyCreateMemoryBlockExternCopyCreateMemoryBlockExternCopyCreateMemoryBlockExternCopycreate_memory_block_extern_copy can be used.
执行信息
- 多线程类型:可重入(与非独占算子并行运行)。
- 多线程作用域:全局(可从任何线程调用)。
- 未采用并行化处理。
此算子返回一个句柄。请注意,即使该句柄被用作特定算子的输入参数,这些算子仍可能改变此句柄类型的实例状态。
参数
PointerPointerPointerPointerpointerpointer (输入控制) pointer → HTupleintHTupleHtuple (integer) (IntPtr) (Hlong) (Hlong)
Data pointer of the memory block.
SizeSizeSizeSizesizesize (输入控制) integer → HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)
Size of the memory block.
FreeFunctionFreeFunctionFreeFunctionFreeFunctionfreeFunctionfree_function (输入控制) pointer → HTupleintHTupleHtuple (integer) (IntPtr) (Hlong) (Hlong)
Function to free the memory block.
默认值:
0
MemoryBlockHandleMemoryBlockHandleMemoryBlockHandleMemoryBlockHandlememoryBlockHandlememory_block_handle (输出控制) memory_block → HMemoryBlock, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)
Handle of the memory block.
结果
如果参数有效,算子 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
模块
基础