Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 什么是;MemoryError:堆栈溢出“;使用CFFI释放内存时是什么意思?_Python_C++_Memory Management_Python Cffi - Fatal编程技术网

Python 什么是;MemoryError:堆栈溢出“;使用CFFI释放内存时是什么意思?

Python 什么是;MemoryError:堆栈溢出“;使用CFFI释放内存时是什么意思?,python,c++,memory-management,python-cffi,Python,C++,Memory Management,Python Cffi,接下来是这个问题 < >我使用CFFI创建一个DLL,我从C++应用程序调用它。我一直在问自己如何释放DLL分配的内存,我遵循了@metal在中提到的想法 下面是我的Python代码: 导入cffi ffibuilder=cffi.FFI() ffibuilder.embedding_api(“”) char*get_string(); 无空隙字符(字符*); ''') ffibuilder.set_source('my_plugin','') ffibuilder.embedding_init

接下来是这个问题

< >我使用CFFI创建一个DLL,我从C++应用程序调用它。我一直在问自己如何释放DLL分配的内存,我遵循了@metal在中提到的想法

下面是我的Python代码:

导入cffi
ffibuilder=cffi.FFI()
ffibuilder.embedding_api(“”)
char*get_string();
无空隙字符(字符*);
''')
ffibuilder.set_source('my_plugin','')
ffibuilder.embedding_init_代码(“”)
从my_插件导入ffi,lib
@外国金融机构定义(外部)
def get_字符串():
val=“字符串”
返回lib.strdup(val.encode())
@外国金融机构定义(外部)
无def字符(ptr):
自由库(ptr)
''')
ffibuilder.cdef(“”)
字符*strdup(常量字符*);
无空隙(空隙*ptr);
''')
编译(target='my-plugin.*',verbose=True)

和我的C++代码:

#包括
#包括
typedef char*(u stdcall*获取字符串)();
typedef void(字符*);
int main()
{
HINSTANCE hGetProcIDDLL=LoadLibrary(“my plugin.dll”);
如果(!hGetProcIDDLL){
标准::cout来自以下文件:

推荐的与Python 2.7兼容的C编译器如下:


对于Python 3.4及更高版本:


然后你要么降级Python或者升级Visual Studio.< /P>我只是用Python 2.7进行了一个测试,用可视化编译器构建CFFI,用Visual 2017构建C++,代码一直运行到最后,没有问题。你使用了哪个编译器?@ MPROMONET我在Visual Studio 2010中使用<代码> C.exe < /C>和Python的最后版本(3.7.2)。

Value 0 = string
Value 10000 = string
Value 20000 = string
Value 30000 = string
Value 40000 = string
Value 50000 = string
Value 60000 = string
Value 70000 = string
Value 80000 = string
Value 90000 = string
Value 100000 = string
Value 110000 = string
Value 120000 = string
Value 130000 = string
Value 140000 = string
Value 150000 = string
Value 160000 = string
Value 170000 = string
Value 180000 = string
Value 190000 = string
Value 200000 = string
Value 210000 = string
Value 220000 = string
Value 230000 = string
Value 240000 = string
Value 250000 = string
From cffi callback <function get_string at 0x03470810>:
MemoryError: Stack overflow
From cffi callback <function get_string at 0x03470810>:

From cffi callback <function get_string at 0x03470810>:
From cffi callback <function get_string at 0x03470810>:
From cffi callback <function get_string at 0x03470810>: