access violation error in Python x64 when using ctypes (caused by pointer)
问题描述
似乎这个问题仅存在于Windows下Python x64中,且Python 2和Python 3中的表现不一致;并且一般是由于调用的C-API包含有指针传递,出现类似如下错误
OSError: exception: access violation reading 0x0000000025F0FA60
示例
C++代码:C++
#include
struct Foo
{
char* child = "a child";
};
extern "C"
{
__declspec(dllexport) char* bar(char*, char*);
__declspec(dllexport) Foo* getFoo(void);
__declspec(dllexport) char* getChild(Foo*);
}
char* bar(char* a, char* b)
{
char* out = new char[strlen(a) + strlen(b) + 1];
strcpy(out, a);
strcat(out, b);
return out;
}
Foo* getFoo()
{
return new Foo();
}
c