Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.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
pybind11-识别并删除C+中的内存泄漏+;包装纸 我有一个简单的C++函数,我试图用 PybDun11( EHVI3DYSLIICUPDEXT/函数)进行包装。它位于循环的深处,在我的Python模块中被调用了几十万到一百万次。不幸的是,它似乎在泄漏内存(700k次呼叫后为12+GB),我不确定原因可能是什么。我编译的包装器如下所示: ==1932812== 676 bytes in 1 blocks are definitely lost in loss record 212 of 485 ==1932812== at 0x4C30F0B: malloc (vg_replace_malloc.c:307) ==1932812== by 0x2D595F: _PyMem_RawWcsdup (obmalloc.c:592) ==1932812== by 0x166786: _PyCoreConfig_Copy.cold (main.c:2535) ==1932812== by 0x34C4C7: _Py_InitializeCore (pylifecycle.c:850) ==1932812== by 0x34CCB3: pymain_init (main.c:3041) ==1932812== by 0x3503EB: pymain_main (main.c:3063) ==1932812== by 0x35085B: _Py_UnixMain (main.c:3103) ==1932812== by 0x5A137B2: (below main) (in /usr/lib64/libc-2.28.so) ==1932812== ==1932812== 688 bytes in 1 blocks are possibly lost in loss record 214 of 485 ==1932812== at 0x4C33419: realloc (vg_replace_malloc.c:834) ==1932812== by 0x21E8F8: _PyObject_GC_Resize (gcmodule.c:1758) ==1932812== by 0x2345DA: UnknownInlinedFun (frameobject.c:726) ==1932812== by 0x2345DA: UnknownInlinedFun (call.c:272) ==1932812== by 0x2345DA: _PyFunction_FastCallKeywords (call.c:408) ==1932812== by 0x2979C7: call_function (ceval.c:4616) ==1932812== by 0x2BE4AB: _PyEval_EvalFrameDefault (ceval.c:3124) ==1932812== by 0x233E93: UnknownInlinedFun (ceval.c:547) ==1932812== by 0x233E93: UnknownInlinedFun (call.c:283) ==1932812== by 0x233E93: _PyFunction_FastCallKeywords (call.c:408) ==1932812== by 0x2979C7: call_function (ceval.c:4616) ==1932812== by 0x2BE4AB: _PyEval_EvalFrameDefault (ceval.c:3124) ==1932812== by 0x233E93: UnknownInlinedFun (ceval.c:547) ==1932812== by 0x233E93: UnknownInlinedFun (call.c:283) ==1932812== by 0x233E93: _PyFunction_FastCallKeywords (call.c:408) ==1932812== by 0x2979C7: call_function (ceval.c:4616) ==1932812== by 0x2BE4AB: _PyEval_EvalFrameDefault (ceval.c:3124) ==1932812== by 0x233E93: UnknownInlinedFun (ceval.c:547) ==1932812== by 0x233E93: UnknownInlinedFun (call.c:283) ==1932812== by 0x233E93: _PyFunction_FastCallKeywords (call.c:408) ==1932812== ==1932812== 1,056 bytes in 2 blocks are possibly lost in loss record 350 of 485 ==1932812== at 0x4C30F0B: malloc (vg_replace_malloc.c:307) ==1932812== by 0x221130: UnknownInlinedFun (obmalloc.c:520) ==1932812== by 0x221130: UnknownInlinedFun (obmalloc.c:1584) ==1932812== by 0x221130: UnknownInlinedFun (obmalloc.c:1576) ==1932812== by 0x221130: UnknownInlinedFun (obmalloc.c:633) ==1932812== by 0x221130: UnknownInlinedFun (gcmodule.c:1693) ==1932812== by 0x221130: UnknownInlinedFun (gcmodule.c:1715) ==1932812== by 0x221130: _PyObject_GC_NewVar (gcmodule.c:1744) ==1932812== by 0x2344F2: UnknownInlinedFun (frameobject.c:713) ==1932812== by 0x2344F2: UnknownInlinedFun (call.c:272) ==1932812== by 0x2344F2: _PyFunction_FastCallKeywords (call.c:408) ==1932812== by 0x2979C7: call_function (ceval.c:4616) ==1932812== by 0x2BE4AB: _PyEval_EvalFrameDefault (ceval.c:3124) ==1932812== by 0x206EAC: UnknownInlinedFun (ceval.c:547) ==1932812== by 0x206EAC: UnknownInlinedFun (call.c:283) ==1932812== by 0x206EAC: _PyFunction_FastCallDict (call.c:322) ==1932812== by 0x20F1BA: UnknownInlinedFun (call.c:98) ==1932812== by 0x20F1BA: object_vacall (call.c:1200) ==1932812== by 0x28E2E6: _PyObject_CallMethodIdObjArgs (call.c:1250) ==1932812== by 0x1FC4A6: UnknownInlinedFun (import.c:1652) ==1932812== by 0x1FC4A6: PyImport_ImportModuleLevelObject (import.c:1764) ==1932812== by 0x2C069F: UnknownInlinedFun (ceval.c:4770) ==1932812== by 0x2C069F: _PyEval_EvalFrameDefault (ceval.c:2600) ==1932812== by 0x205AF1: UnknownInlinedFun (ceval.c:547) ==1932812== by 0x205AF1: _PyEval_EvalCodeWithName (ceval.c:3930) ==1932812== by 0x206D08: PyEval_EvalCodeEx (ceval.c:3959) #包括 #包括 #包括 #包括“helper.h” #包括“ehvi_计算。h” #包括“ehvi_sliceupdate.h” 名称空间py=pybind11; //从main.cc复制 //检查p是否支配p。从p中移除p支配的点,并返回移除的点数。 内部检查优势(德克&普,个人*P){ int nr=0; 对于(int i=P.size()-1;i>=0;i--){ 如果(p->f[0]>=p[i]->f[0]&&p->f[1]>=p[i]->f[1]&&p->f[2]>=p[i]->f[2]){ cerr_Python_C++_Numpy_Pybind11 - Fatal编程技术网

pybind11-识别并删除C+中的内存泄漏+;包装纸 我有一个简单的C++函数,我试图用 PybDun11( EHVI3DYSLIICUPDEXT/函数)进行包装。它位于循环的深处,在我的Python模块中被调用了几十万到一百万次。不幸的是,它似乎在泄漏内存(700k次呼叫后为12+GB),我不确定原因可能是什么。我编译的包装器如下所示: ==1932812== 676 bytes in 1 blocks are definitely lost in loss record 212 of 485 ==1932812== at 0x4C30F0B: malloc (vg_replace_malloc.c:307) ==1932812== by 0x2D595F: _PyMem_RawWcsdup (obmalloc.c:592) ==1932812== by 0x166786: _PyCoreConfig_Copy.cold (main.c:2535) ==1932812== by 0x34C4C7: _Py_InitializeCore (pylifecycle.c:850) ==1932812== by 0x34CCB3: pymain_init (main.c:3041) ==1932812== by 0x3503EB: pymain_main (main.c:3063) ==1932812== by 0x35085B: _Py_UnixMain (main.c:3103) ==1932812== by 0x5A137B2: (below main) (in /usr/lib64/libc-2.28.so) ==1932812== ==1932812== 688 bytes in 1 blocks are possibly lost in loss record 214 of 485 ==1932812== at 0x4C33419: realloc (vg_replace_malloc.c:834) ==1932812== by 0x21E8F8: _PyObject_GC_Resize (gcmodule.c:1758) ==1932812== by 0x2345DA: UnknownInlinedFun (frameobject.c:726) ==1932812== by 0x2345DA: UnknownInlinedFun (call.c:272) ==1932812== by 0x2345DA: _PyFunction_FastCallKeywords (call.c:408) ==1932812== by 0x2979C7: call_function (ceval.c:4616) ==1932812== by 0x2BE4AB: _PyEval_EvalFrameDefault (ceval.c:3124) ==1932812== by 0x233E93: UnknownInlinedFun (ceval.c:547) ==1932812== by 0x233E93: UnknownInlinedFun (call.c:283) ==1932812== by 0x233E93: _PyFunction_FastCallKeywords (call.c:408) ==1932812== by 0x2979C7: call_function (ceval.c:4616) ==1932812== by 0x2BE4AB: _PyEval_EvalFrameDefault (ceval.c:3124) ==1932812== by 0x233E93: UnknownInlinedFun (ceval.c:547) ==1932812== by 0x233E93: UnknownInlinedFun (call.c:283) ==1932812== by 0x233E93: _PyFunction_FastCallKeywords (call.c:408) ==1932812== by 0x2979C7: call_function (ceval.c:4616) ==1932812== by 0x2BE4AB: _PyEval_EvalFrameDefault (ceval.c:3124) ==1932812== by 0x233E93: UnknownInlinedFun (ceval.c:547) ==1932812== by 0x233E93: UnknownInlinedFun (call.c:283) ==1932812== by 0x233E93: _PyFunction_FastCallKeywords (call.c:408) ==1932812== ==1932812== 1,056 bytes in 2 blocks are possibly lost in loss record 350 of 485 ==1932812== at 0x4C30F0B: malloc (vg_replace_malloc.c:307) ==1932812== by 0x221130: UnknownInlinedFun (obmalloc.c:520) ==1932812== by 0x221130: UnknownInlinedFun (obmalloc.c:1584) ==1932812== by 0x221130: UnknownInlinedFun (obmalloc.c:1576) ==1932812== by 0x221130: UnknownInlinedFun (obmalloc.c:633) ==1932812== by 0x221130: UnknownInlinedFun (gcmodule.c:1693) ==1932812== by 0x221130: UnknownInlinedFun (gcmodule.c:1715) ==1932812== by 0x221130: _PyObject_GC_NewVar (gcmodule.c:1744) ==1932812== by 0x2344F2: UnknownInlinedFun (frameobject.c:713) ==1932812== by 0x2344F2: UnknownInlinedFun (call.c:272) ==1932812== by 0x2344F2: _PyFunction_FastCallKeywords (call.c:408) ==1932812== by 0x2979C7: call_function (ceval.c:4616) ==1932812== by 0x2BE4AB: _PyEval_EvalFrameDefault (ceval.c:3124) ==1932812== by 0x206EAC: UnknownInlinedFun (ceval.c:547) ==1932812== by 0x206EAC: UnknownInlinedFun (call.c:283) ==1932812== by 0x206EAC: _PyFunction_FastCallDict (call.c:322) ==1932812== by 0x20F1BA: UnknownInlinedFun (call.c:98) ==1932812== by 0x20F1BA: object_vacall (call.c:1200) ==1932812== by 0x28E2E6: _PyObject_CallMethodIdObjArgs (call.c:1250) ==1932812== by 0x1FC4A6: UnknownInlinedFun (import.c:1652) ==1932812== by 0x1FC4A6: PyImport_ImportModuleLevelObject (import.c:1764) ==1932812== by 0x2C069F: UnknownInlinedFun (ceval.c:4770) ==1932812== by 0x2C069F: _PyEval_EvalFrameDefault (ceval.c:2600) ==1932812== by 0x205AF1: UnknownInlinedFun (ceval.c:547) ==1932812== by 0x205AF1: _PyEval_EvalCodeWithName (ceval.c:3930) ==1932812== by 0x206D08: PyEval_EvalCodeEx (ceval.c:3959) #包括 #包括 #包括 #包括“helper.h” #包括“ehvi_计算。h” #包括“ehvi_sliceupdate.h” 名称空间py=pybind11; //从main.cc复制 //检查p是否支配p。从p中移除p支配的点,并返回移除的点数。 内部检查优势(德克&普,个人*P){ int nr=0; 对于(int i=P.size()-1;i>=0;i--){ 如果(p->f[0]>=p[i]->f[0]&&p->f[1]>=p[i]->f[1]&&p->f[2]>=p[i]->f[2]){ cerr

pybind11-识别并删除C+中的内存泄漏+;包装纸 我有一个简单的C++函数,我试图用 PybDun11( EHVI3DYSLIICUPDEXT/函数)进行包装。它位于循环的深处,在我的Python模块中被调用了几十万到一百万次。不幸的是,它似乎在泄漏内存(700k次呼叫后为12+GB),我不确定原因可能是什么。我编译的包装器如下所示: ==1932812== 676 bytes in 1 blocks are definitely lost in loss record 212 of 485 ==1932812== at 0x4C30F0B: malloc (vg_replace_malloc.c:307) ==1932812== by 0x2D595F: _PyMem_RawWcsdup (obmalloc.c:592) ==1932812== by 0x166786: _PyCoreConfig_Copy.cold (main.c:2535) ==1932812== by 0x34C4C7: _Py_InitializeCore (pylifecycle.c:850) ==1932812== by 0x34CCB3: pymain_init (main.c:3041) ==1932812== by 0x3503EB: pymain_main (main.c:3063) ==1932812== by 0x35085B: _Py_UnixMain (main.c:3103) ==1932812== by 0x5A137B2: (below main) (in /usr/lib64/libc-2.28.so) ==1932812== ==1932812== 688 bytes in 1 blocks are possibly lost in loss record 214 of 485 ==1932812== at 0x4C33419: realloc (vg_replace_malloc.c:834) ==1932812== by 0x21E8F8: _PyObject_GC_Resize (gcmodule.c:1758) ==1932812== by 0x2345DA: UnknownInlinedFun (frameobject.c:726) ==1932812== by 0x2345DA: UnknownInlinedFun (call.c:272) ==1932812== by 0x2345DA: _PyFunction_FastCallKeywords (call.c:408) ==1932812== by 0x2979C7: call_function (ceval.c:4616) ==1932812== by 0x2BE4AB: _PyEval_EvalFrameDefault (ceval.c:3124) ==1932812== by 0x233E93: UnknownInlinedFun (ceval.c:547) ==1932812== by 0x233E93: UnknownInlinedFun (call.c:283) ==1932812== by 0x233E93: _PyFunction_FastCallKeywords (call.c:408) ==1932812== by 0x2979C7: call_function (ceval.c:4616) ==1932812== by 0x2BE4AB: _PyEval_EvalFrameDefault (ceval.c:3124) ==1932812== by 0x233E93: UnknownInlinedFun (ceval.c:547) ==1932812== by 0x233E93: UnknownInlinedFun (call.c:283) ==1932812== by 0x233E93: _PyFunction_FastCallKeywords (call.c:408) ==1932812== by 0x2979C7: call_function (ceval.c:4616) ==1932812== by 0x2BE4AB: _PyEval_EvalFrameDefault (ceval.c:3124) ==1932812== by 0x233E93: UnknownInlinedFun (ceval.c:547) ==1932812== by 0x233E93: UnknownInlinedFun (call.c:283) ==1932812== by 0x233E93: _PyFunction_FastCallKeywords (call.c:408) ==1932812== ==1932812== 1,056 bytes in 2 blocks are possibly lost in loss record 350 of 485 ==1932812== at 0x4C30F0B: malloc (vg_replace_malloc.c:307) ==1932812== by 0x221130: UnknownInlinedFun (obmalloc.c:520) ==1932812== by 0x221130: UnknownInlinedFun (obmalloc.c:1584) ==1932812== by 0x221130: UnknownInlinedFun (obmalloc.c:1576) ==1932812== by 0x221130: UnknownInlinedFun (obmalloc.c:633) ==1932812== by 0x221130: UnknownInlinedFun (gcmodule.c:1693) ==1932812== by 0x221130: UnknownInlinedFun (gcmodule.c:1715) ==1932812== by 0x221130: _PyObject_GC_NewVar (gcmodule.c:1744) ==1932812== by 0x2344F2: UnknownInlinedFun (frameobject.c:713) ==1932812== by 0x2344F2: UnknownInlinedFun (call.c:272) ==1932812== by 0x2344F2: _PyFunction_FastCallKeywords (call.c:408) ==1932812== by 0x2979C7: call_function (ceval.c:4616) ==1932812== by 0x2BE4AB: _PyEval_EvalFrameDefault (ceval.c:3124) ==1932812== by 0x206EAC: UnknownInlinedFun (ceval.c:547) ==1932812== by 0x206EAC: UnknownInlinedFun (call.c:283) ==1932812== by 0x206EAC: _PyFunction_FastCallDict (call.c:322) ==1932812== by 0x20F1BA: UnknownInlinedFun (call.c:98) ==1932812== by 0x20F1BA: object_vacall (call.c:1200) ==1932812== by 0x28E2E6: _PyObject_CallMethodIdObjArgs (call.c:1250) ==1932812== by 0x1FC4A6: UnknownInlinedFun (import.c:1652) ==1932812== by 0x1FC4A6: PyImport_ImportModuleLevelObject (import.c:1764) ==1932812== by 0x2C069F: UnknownInlinedFun (ceval.c:4770) ==1932812== by 0x2C069F: _PyEval_EvalFrameDefault (ceval.c:2600) ==1932812== by 0x205AF1: UnknownInlinedFun (ceval.c:547) ==1932812== by 0x205AF1: _PyEval_EvalCodeWithName (ceval.c:3930) ==1932812== by 0x206D08: PyEval_EvalCodeEx (ceval.c:3959) #包括 #包括 #包括 #包括“helper.h” #包括“ehvi_计算。h” #包括“ehvi_sliceupdate.h” 名称空间py=pybind11; //从main.cc复制 //检查p是否支配p。从p中移除p支配的点,并返回移除的点数。 内部检查优势(德克&普,个人*P){ int nr=0; 对于(int i=P.size()-1;i>=0;i--){ 如果(p->f[0]>=p[i]->f[0]&&p->f[1]>=p[i]->f[1]&&p->f[2]>=p[i]->f[2]){ cerr,python,c++,numpy,pybind11,Python,C++,Numpy,Pybind11,结果是在可能的情况下删除了new的使用(并在没有删除的情况下添加delete)在基库中,用“代码> > MaxySuffy和 SydDypTr/Cl>替换所有的原始指针,包装器实际上修复了这个问题。看起来,使用这些过原始指针,一旦变量超出范围,就会自动释放内存(知识丰富的C++用户可以在注释中纠正我)。 这对于C++程序员来说可能是基本的/显而易见的,但是对于非C++用户/初学者(对于我的记录,如果我忘记了),则修复是: //Change declarations like these: //

结果是在可能的情况下删除了
new
的使用(并在没有删除的情况下添加
delete
)在基库中,用“代码> > MaxySuffy和 SydDypTr/Cl>替换所有的原始指针,包装器实际上修复了这个问题。看起来,使用这些过原始指针,一旦变量超出范围,就会自动释放内存(知识丰富的C++用户可以在注释中纠正我)。 <>这对于C++程序员来说可能是基本的/显而易见的,但是对于非C++用户/初学者(对于我的记录,如果我忘记了),则修复是:

//Change declarations like these:
// vector<mus*> pdf;
vector<shared_ptr<mus>> pdf;
// mus * tempmus = new mus;
auto tempmus = make_shared<mus>();
// newind = new specialind;
auto newind = make_shared<specialind>();
// deque<specialind*> Px, Py, Pz; 
deque<shared_ptr<specialind>> Px, Py, Pz;

// Replace function signatures and headers like this
// int checkdominance(deque<individual*> & P, individual* p);
int checkdominance(deque<shared_ptr<individual>> & P, shared_ptr<individual> p);

// Parts of structs like this
struct specialind{
  // individual *point;
  std::shared_ptr<individual> point;
};

// Couldn't figure out how to change this one to remove new as it was needed in a later scope... 
// Added delete at the end after it looked like it wasn't needed
Pstruct = new thingy[n*n];
// ...
delete [] Pstruct;  // Addded this at the end.
--实际上,看起来内存消耗是稳定的,不再增长。(我不确定为什么会有来自
valgrind
的虚假消息,但它们在运行期间似乎不会明显影响内存。)现在我可以运行
python test.py
几分钟,并且它在15MB左右保持稳定


感谢
pybind11
和Adam Thompson的同事们为我讲解了基础知识。

你重新编写的代码不再使用
新的
,应该不会再泄漏了。泄漏仍然很严重吗?嗨@nanofrad-原来库本身泄漏得很严重!我已经做了一些修复,我将为这个问题添加更多信息。不幸的是,在应用pybind11包装器后仍然会泄漏。我现在意识到,现在库是无泄漏的,我不再使用
new
,看起来如果我在
中通过调用python中的包装器来运行测试,而True
循环,那么内存使用是稳定的(或者至少不会以明显的速度增长)也许<代码> Valgnd< /Cord>在使用<代码> Python 运行时是伪造的。但是问题似乎已经固定了。我将相应地编辑这个问题。一个小提示——如果您不需要真正的共享语义,您可以考虑在某些地方使用<代码> UnQuyGPPT/<代码>以获得更好的性能,尽管您可能需要使用STD::有些地方是不可复制的。@nanofarad谢谢!我必须检查一下如何做到这一点。它是
shared\u ptr
还是
make\u shared
?(或者它们是一样的吗?)它是shared\u ptr的替代品;从C++14开始有make\u shared,否则它会像
std::unique\u ptr(新个人)< UngQuyPtR教程应该有精确的语法。谢谢!如果我以后再回到C++,我会注意到的。
==1932812== 676 bytes in 1 blocks are definitely lost in loss record 212 of 485
==1932812==    at 0x4C30F0B: malloc (vg_replace_malloc.c:307)
==1932812==    by 0x2D595F: _PyMem_RawWcsdup (obmalloc.c:592)
==1932812==    by 0x166786: _PyCoreConfig_Copy.cold (main.c:2535)
==1932812==    by 0x34C4C7: _Py_InitializeCore (pylifecycle.c:850)
==1932812==    by 0x34CCB3: pymain_init (main.c:3041)
==1932812==    by 0x3503EB: pymain_main (main.c:3063)
==1932812==    by 0x35085B: _Py_UnixMain (main.c:3103)
==1932812==    by 0x5A137B2: (below main) (in /usr/lib64/libc-2.28.so)
==1932812== 
==1932812== 688 bytes in 1 blocks are possibly lost in loss record 214 of 485
==1932812==    at 0x4C33419: realloc (vg_replace_malloc.c:834)
==1932812==    by 0x21E8F8: _PyObject_GC_Resize (gcmodule.c:1758)
==1932812==    by 0x2345DA: UnknownInlinedFun (frameobject.c:726)
==1932812==    by 0x2345DA: UnknownInlinedFun (call.c:272)
==1932812==    by 0x2345DA: _PyFunction_FastCallKeywords (call.c:408)
==1932812==    by 0x2979C7: call_function (ceval.c:4616)
==1932812==    by 0x2BE4AB: _PyEval_EvalFrameDefault (ceval.c:3124)
==1932812==    by 0x233E93: UnknownInlinedFun (ceval.c:547)
==1932812==    by 0x233E93: UnknownInlinedFun (call.c:283)
==1932812==    by 0x233E93: _PyFunction_FastCallKeywords (call.c:408)
==1932812==    by 0x2979C7: call_function (ceval.c:4616)
==1932812==    by 0x2BE4AB: _PyEval_EvalFrameDefault (ceval.c:3124)
==1932812==    by 0x233E93: UnknownInlinedFun (ceval.c:547)
==1932812==    by 0x233E93: UnknownInlinedFun (call.c:283)
==1932812==    by 0x233E93: _PyFunction_FastCallKeywords (call.c:408)
==1932812==    by 0x2979C7: call_function (ceval.c:4616)
==1932812==    by 0x2BE4AB: _PyEval_EvalFrameDefault (ceval.c:3124)
==1932812==    by 0x233E93: UnknownInlinedFun (ceval.c:547)
==1932812==    by 0x233E93: UnknownInlinedFun (call.c:283)
==1932812==    by 0x233E93: _PyFunction_FastCallKeywords (call.c:408)
==1932812== 
==1932812== 1,056 bytes in 2 blocks are possibly lost in loss record 350 of 485
==1932812==    at 0x4C30F0B: malloc (vg_replace_malloc.c:307)
==1932812==    by 0x221130: UnknownInlinedFun (obmalloc.c:520)
==1932812==    by 0x221130: UnknownInlinedFun (obmalloc.c:1584)
==1932812==    by 0x221130: UnknownInlinedFun (obmalloc.c:1576)
==1932812==    by 0x221130: UnknownInlinedFun (obmalloc.c:633)
==1932812==    by 0x221130: UnknownInlinedFun (gcmodule.c:1693)
==1932812==    by 0x221130: UnknownInlinedFun (gcmodule.c:1715)
==1932812==    by 0x221130: _PyObject_GC_NewVar (gcmodule.c:1744)
==1932812==    by 0x2344F2: UnknownInlinedFun (frameobject.c:713)
==1932812==    by 0x2344F2: UnknownInlinedFun (call.c:272)
==1932812==    by 0x2344F2: _PyFunction_FastCallKeywords (call.c:408)
==1932812==    by 0x2979C7: call_function (ceval.c:4616)
==1932812==    by 0x2BE4AB: _PyEval_EvalFrameDefault (ceval.c:3124)
==1932812==    by 0x206EAC: UnknownInlinedFun (ceval.c:547)
==1932812==    by 0x206EAC: UnknownInlinedFun (call.c:283)
==1932812==    by 0x206EAC: _PyFunction_FastCallDict (call.c:322)
==1932812==    by 0x20F1BA: UnknownInlinedFun (call.c:98)
==1932812==    by 0x20F1BA: object_vacall (call.c:1200)
==1932812==    by 0x28E2E6: _PyObject_CallMethodIdObjArgs (call.c:1250)
==1932812==    by 0x1FC4A6: UnknownInlinedFun (import.c:1652)
==1932812==    by 0x1FC4A6: PyImport_ImportModuleLevelObject (import.c:1764)
==1932812==    by 0x2C069F: UnknownInlinedFun (ceval.c:4770)
==1932812==    by 0x2C069F: _PyEval_EvalFrameDefault (ceval.c:2600)
==1932812==    by 0x205AF1: UnknownInlinedFun (ceval.c:547)
==1932812==    by 0x205AF1: _PyEval_EvalCodeWithName (ceval.c:3930)
==1932812==    by 0x206D08: PyEval_EvalCodeEx (ceval.c:3959)
//Change declarations like these:
// vector<mus*> pdf;
vector<shared_ptr<mus>> pdf;
// mus * tempmus = new mus;
auto tempmus = make_shared<mus>();
// newind = new specialind;
auto newind = make_shared<specialind>();
// deque<specialind*> Px, Py, Pz; 
deque<shared_ptr<specialind>> Px, Py, Pz;

// Replace function signatures and headers like this
// int checkdominance(deque<individual*> & P, individual* p);
int checkdominance(deque<shared_ptr<individual>> & P, shared_ptr<individual> p);

// Parts of structs like this
struct specialind{
  // individual *point;
  std::shared_ptr<individual> point;
};

// Couldn't figure out how to change this one to remove new as it was needed in a later scope... 
// Added delete at the end after it looked like it wasn't needed
Pstruct = new thingy[n*n];
// ...
delete [] Pstruct;  // Addded this at the end.