"قائمة تالفة مرتبطة مزدوجة" على دفعة :: وظيفة مجانية () [تكرار

StackOverflow https://stackoverflow.com/questions/1506738

  •  19-09-2019
  •  | 
  •  

سؤال

سأحاول طرح هذا السؤال دون توفير الكثير من التعليمات البرمجية المصدرية لأن جميع البتات ذات الصلة تضيف ما يصل إلى مجموعة. المفتاح (أعتقد؟) الكائنات المعنية

using namespace o2scl;

typedef MSMTModel<TASensor,PosModel,target2d,ovector,ovector_const_subvector> TA_MSMTModel;
typedef MPC_funct_mfptr<MSMT_InitialState,TA_MSMTModel,MSMTFormation> MPC_TAFormation_mfptr;
typedef boost::function<int (size_t, const ovector_base&, double&, TA_MSMTModel&)> TA_mfunct;

TA_mfunct mf1 = boost::bind(&MPC_TAFormation_mfptr::mfn, f1, _1, _2, _3, _4);

يتم استخدام دفعة :: وظيفة MF1 كدالة اتصال لروتين التقليل (O2SCL :: OOL_MMIN_SPG.) لكنني لا أعتقد أن المشكلة التي أواجهها محددة لذلك. يعمل الرمز مع الدالة المكالمات إلى وظيفة OOL_MMIN_SPG.MMIN () التي تستفيد من MF1 كإعداء اتصال ويبدو أنه يعمل دون أخطاء. ثم أحصل على هذه الرسالة الجميلة

* glibc اكتشف * . أيققا: قائمة تالفة مرتبطة مزدوجة: 0x0000000001e9fb20 ***

تليها تراث خريطة الذاكرة. يبدو أن الخط ذي الصلة من Backtrace


# 7 0x00000000000041d32a في دفعة :: Detail :: Functor_Manager، O2SCL :: OVETOR_CONST_SUBVETOR_TLATE>، MSMTFormation>، Unsigned Long، O2SCL :: OVETOR_BASE_TLATE CONST &، DOVENT &، DMET :: O2SCL، OVETOR_CONST_SUBVETOR_TLATE> &>، boost: : _BI :: List5، O2SCL :: O2SCL_CONST_SUBVETOR_TLATE>، MSMTformation >>، تعزيز: arg <1>، دفعة :: Arg <2>، دفعة :: Arg <3>، دفعة :: Arg <4> >>> :: إدارة (in_buffer =، out_buffer = تحذير: (خطأ داخلي: PC 0x41D270 في قراءة في Psymtab، ولكن ليس في Symtab.)


أنا أستنتج أن هناك مشكلة في تحرير الذاكرة من الدالة دفعة :: ولكن بخلاف ذلك فقدت. هل هناك أي مؤشرات حول محاولة تصحيح أخطاء أخطاء "تالف قائمة مرتبطة مزدوجة"؟ لقد وجدت بعض المراجع على Google ولكن يبدو أن كل شيء يبدو أن تعالج مشاكل محددة للغاية. واسمحوا لي أن أعرف ما إذا كانت هناك حاجة إلى مزيد من القصاصات رمز مفصل وشكرا على وقتك!

هل كانت مفيدة؟

المحلول

قم بتشغيل البرنامج من خلال Valgrind. ستمنحك تتبع مكدس عند تلف الذاكرة (بالإضافة إلى تتبع المكدس المقابل لتاريخ هذه القطعة من الذاكرة، حيث تم إنشاؤها أو، إذا تم حذفها، حيث تم تدميرها).

نصائح أخرى

أنا كاتب O2SCL ولم أر هذه المشاركة حتى الآن. نظرت إلى SPG Senimizer قليلا فقط للتأكد، ولم أرى أي شيء خطأ بوضوح، لكنني أعترف أنني لم أحاول أبدا استخدام دفعة :: وظيفة و O2SCL معا بهذه الطريقة. سأستمر في أن أبدو أشياء أكثر قليلا، لكن اسمحوا لي أن أعرف إذا كنت تعرف الأشياء.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top