c++ - Python C-extension class with a dynamic size -



c++ - Python C-extension class with a dynamic size -

i seek write c-extension contains python class.

this class takes filename parameter fname of constructor, loads file memory , stores config.

below have:

typedef struct { pyobject_head xmlconfig m_cfg; } pyagent; static int pyagent_init(pyagent *self, pyobject *args) { const char *fname; if (!pyarg_parsetuple(args, "s", &fname)) { homecoming null; } self->m_cfg.load(fname); homecoming 0; } static pytypeobject pyagenttype = { pyobject_head_init(null) 0, /* ob_size */ "classify.agent", /* tp_name */ ... } ...

i segmentation fault when seek load file. understand happens because pyagent struct has object size increases because of memory allocation file.

i've tried utilize pyobject_var_head macro doesn't help.

can give clue or working similar example?

maybe self->m_cfg needs initialized first? calling c++ method on it, didn't phone call constructor first. struct allocated c code, not c++, doesn't know needs build field.

there ways manually phone call constructor (something new(&self->m_cfg) xmlconfig() if remember correctly), easiest have instead field xmlconfig *cfg, , allocate , free needed usual syntax of c++ operators new , delete (the latter set in tp_dealloc).

python c++ c segmentation-fault python-c-extension

Comments

Popular posts from this blog

Delphi change the assembly code of a running process -

json - Hibernate and Jackson (java.lang.IllegalStateException: Cannot call sendError() after the response has been committed) -

C++ 11 "class" keyword -