C#封送内存的初始化和销毁
我有一个C库函数,它根据结构的大小和id为结构分配内存,id在运行时使用注册器函数分配。函数如下所示C#封送内存的初始化和销毁,c#,c,marshalling,C#,C,Marshalling,我有一个C库函数,它根据结构的大小和id为结构分配内存,id在运行时使用注册器函数分配。函数如下所示 void *allocate_objects(uint32_t structure_id, uint32_t size, uint32_t count, void *(*constructor)(void *), void (*destructor)(void *)); 此外,它还获取一个指向用于初始化已分配内存的构造函数的指针和一个析构函数,该
void *allocate_objects(uint32_t structure_id, uint32_t size, uint32_t count,
void *(*constructor)(void *), void (*destructor)(void *));
此外,它还获取一个指向用于初始化已分配内存的构造函数的指针和一个析构函数,该析构函数在释放内存后被调用(它可能不会被释放,但不再保留,并且可以被库重用)
库不关心使用allocate\u objects
分配的内存中的实际内容,它只管理这些对象的内存
我想在我的C#代码和C#结构和类中使用它,但是我不知道如何正确地将构造函数和析构函数传递给分配函数
关于如何做到这一点,我有几个想法:
onCreate
和onDestroy
),然后从工厂函数调用这些函数allocate\u objects
将执行与malloc
等价的操作,并且内存不会为零)@HansPassant该程序本身并不完全是C#,它在某些代码部分使用C#来简化脚本编写,但是大多数面向性能的代码都是用C编写的。C代码的其他部分也使用此函数,而将指向C#分配对象的指针传递到库中则意义不大,需要更多的工作,因为C代码的其余部分希望使用此函数分配和管理内存