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_extern( : : Pointer, Size, FreeFunction : MemoryBlockHandle)

Herror T_create_memory_block_extern(const Htuple Pointer, const Htuple Size, const Htuple FreeFunction, Htuple* MemoryBlockHandle)

void CreateMemoryBlockExtern(const HTuple& Pointer, const HTuple& Size, const HTuple& FreeFunction, HTuple* MemoryBlockHandle)

void HMemoryBlock::HMemoryBlock(void* Pointer, Hlong Size, void* FreeFunction)

void HMemoryBlock::CreateMemoryBlockExtern(void* Pointer, Hlong Size, void* FreeFunction)

static void HOperatorSet.CreateMemoryBlockExtern(HTuple pointer, HTuple size, HTuple freeFunction, out HTuple memoryBlockHandle)

public HMemoryBlock(IntPtr pointer, int size, IntPtr freeFunction)

void HMemoryBlock.CreateMemoryBlockExtern(IntPtr pointer, int size, IntPtr freeFunction)

def create_memory_block_extern(pointer: int, size: int, free_function: int) -> HHandle

描述

create_memory_block_externcreate_memory_block_externCreateMemoryBlockExternCreateMemoryBlockExternCreateMemoryBlockExterncreate_memory_block_extern 创建内存块并返回其句柄 MemoryBlockHandleMemoryBlockHandleMemoryBlockHandleMemoryBlockHandlememoryBlockHandlememory_block_handlePointerPointerPointerPointerpointerpointer 是指向内存块起始位置的数据指针。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

模块

基础