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_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 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

模块

基础