为什么析构函数会导致程序崩溃?

时间:2015-05-20 14:42:52

标签: python c++ ctypes

我正在使用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出了什么问题?

0 个答案:

没有答案