2

我已经建立了一个由 py​​thon 层和 C++ 层组成的库。在 C++ 层中,我需要将一大块内存保留在堆中,因此必须在编译时动态分配该块。

我想要做的是让这块内存可以从 python 端进行配置。有没有办法从 python 动态分配内存空间并将指针传递给 C++ 层?

谢谢

4

2 回答 2

0

使用 ctypes byref 或指针

要动态分配内存,您可以在 Python 中创建一个变量或数组(最好使用 ctypes 提供的数据类型),然后您可以通过一个函数左右将指针传递给 C++ 层

见:https ://docs.python.org/3/library/ctypes.html#passing-pointers-or-passing-parameters-by-reference

于 2020-07-09T20:41:00.190 回答
0

您可以使用ctypes库来调用 DLL/共享库。

视窗:

import ctypes
dwFlags = ctypes.c_int(0x00000008) # HEAP_ZERO_MEMORY
szSize = 256 # Size of the area you want to allocate

addr = ctypes.windll.kernel32.HeapAlloc(ctypes.windll.kernel32.GetProcessHeap(), ctypes.c_int(dwFlags), ctypes.c_int(szSize))

现在变量addr保存了分配的内存地址

于 2020-07-09T20:42:52.427 回答