我正在使用Python连接一些C ++代码。
这是C ++:
#include <string.h>
#include <iostream>
extern "C" {
struct buf {
buf(char* p, int len) : p_(strdup(p)), len_(len) { }
char *p_;
int len_;
~buf() { }
};
buf foo(char* h)
{
return buf(h, strlen(h));
} }
这是Python:
from ctypes import *
import struct
class buf(Structure):
_fields_ = [("buf", c_char_p), ("len", c_int)]
d = cdll.LoadLibrary('./foo.so')
d.foo.restype = buf
b = d.foo('hello world')
print b.buf
print b.len
此代码导致seg错误。但是,如果我在struct buf中注释析构函数,则不会发生崩溃。 Python gc出了什么问题?