mfc - الكاذبة - مرض متلازمة ذاكرة سندريلا




تسريبات الذاكرة الكاذبة في مشروع مفك (2)

هذه التسريبات مشروعة. أود مضاعفة التحقق من وثائق دل للتأكد من أنك لا تفتقد المكالمات إلى دل تنظيف وظائف محددة.

لدي مشروع مفك، وهذا هو ربط دلل طرف ثالث. في خروج البرنامج، تقارير إيد مرة أخرى أن "الكشف عن تسرب الذاكرة!" ويقطر التسريبات.

هذه التسريبات هي من دلل طرف ثالث. أنا متأكد من أن يتم الإبلاغ عن هذه زورا. (يشير فحص غوغل السريع إلى أن مفك يتحقق من تسرب الذاكرة قبل أن يقوم كرت بتدمير المتغيرات في نطاق الملف.)

هل هناك طريقة لتعطيل الاختيار تسرب الذاكرة، فقط لهذا دلل؟

وردا على الجواب الذي تم نشره حتى الآن

لا أعتقد أنني أساء استخدام واجهة برمجة التطبيقات. السلوك الذي أظن أنه يمكن استنساخه مع مشروع بسيط

  1. باستخدام VS2005
  2. إنشاء حل جديد.
  3. إنشاء مشروع جديد (تطبيق مفك.)
  4. إنشاء مشروع جديد (مشروع ويندوز 32، نوع التطبيق: دل، رموز التصدير)
  5. في مشروع دل، تصدير وظيفة.
  6. في مشروع دل، تعريف فئة فو على النحو التالي

إليك الرمز

class foo
{
    public:
        foo(void)  { p = new int; };
        ~foo(void) { delete p; }
    private:
        int* p;
};

في مشروع دل، إنشاء مثيل من فئة فو، تحديد نطاق على مستوى الملف.

foo g_foo;

// This is an example of an exported function.
TEMPDLL_API int exportedFunction(void)
{
    return 42;
}

في مشروع مفك، وصلة إلى المكتبة، واستدعاء وظيفة تصديرها في إنيتينستانس ()

تشغيل التطبيق، سيتم الإبلاغ عن تسرب الذاكرة، على الرغم من يتم حذف p، عندما ديستروكتور ل g_foo يسمى.


وجدت ما أردت.

  • في الحوارات الملكية المشروع، تحت لينكر | إدخال
  • حدد دل كملف تأخير تحميل.

مرة واحدة فعلت هذا، فيسوال ستوديو لم يعد ذكرت أي تسرب الذاكرة.