كيفيه استخدام _crtBreakAlloc لتصحيح تخصيص الذاكرة


الملخص


عند تعقب تسرب الذاكرة باستخدام التصحيح C-وقت التشغيل (CRT) ، من المفيد غالبا تعيين نقطه توقف مباشره قبل تخصيص الذاكرة التي تتسبب في حدوث التسرب. باعداد _crtBreakAlloc اما وقت التحويل البرمجي أو وقت التشغيل ، يمكنك التسبب في وجود نقطه توقف معرفه بواسطة المستخدم عند نقطه معينه من تخصيص الذاكرة.

مزيد من المعلومات


عند تعقب عمليات تسرب الذاكرة باستخدام دالات التصحيح CRT ، مثل _CrtDumpMemoryLeaks ، يظهر عاده رقم التخصيص المحاط بأقواس ({}). علي سبيل المثال ، يشكل التالي تسربا في الذاكرة عند رقم التخصيص 18:
   Detected memory leaks!   Dumping objects ->   {18} normal block at 0x00660BE4, 10 bytes long   Data: <          > CD CD CD CD CD CD CD CD CD CD   Object dump complete. 
من المفيد تعيين نقطه توقف قبل تخصيص هذه الذاكرة بحيث تتمكن من التنقل عبر مكدس الاستدعاءات ومعرفه الوظائف التي تتسبب في تخصيص هذه الذاكرة. تقوم الدالة CRT-_CrtSetBreakAlloc التي تسمح لك بتحديد رقم التخصيص الذي تريد قطعه. يتطلب هذا الأسلوب أعاده ترجمه البرنامج كل مره تريد فيها تعيين نقطه توقف للتخصيص. أسلوب بديل هو استخدام نافذه المراقبة وتعيين نقطه توقف التخصيص ديناميكيا. يتضمن هذا الأسلوب ميزه عدم الحاجة إلى اي تغييرات في تعليمات برمجيه المصدر أو أعاده الترجمة. إذا كنت تقوم بالربط بشكل ثابت بوقت التشغيل C ، سيسمي المتغير الذي تريد تغييره _crtBreakAlloc. إذا كنت تقوم بإنشاء ارتباط ديناميكي إلى وقت التشغيل C ، سيكون المتغير الذي تريد تغييره في نافذه المراقبة هو {، ، msvcr40d} * __p__crtBreakAlloc () إذا كنت تستخدم Visual c + 4.0 أو 4.1. يجب ان يكون المتغير الذي تريد تغييره في نافذه المراقبة {,, مسفكرتد} * __p__crtBreakAlloc () إذا كنت تستخدم Visual c + 4.2 أو إصدار أحدث. لتحديد اي إصدار من CRT تقوم بترجمته باستخدام:
  1. من القائمة إنشاء ، اختر إعدادات.
  2. في الجزء إعدادات ل: ، حدد التكوين الذي تقوم بإنشاءه. اختر علامة التبويب C/c + + ، ثم حدد الفئة إنشاء التعليمات البرمجية.
يجب ان يظهر مربع الحوار "استخدام مكتبه وقت التشغيل" لعرض إصدار CRT الذي تستخدمه. (إذا كان هذا الاعداد فارغا ، فتاكد من انك قمت بتحديد تكوين واحد فقط في الجزء إعدادات:). لتعيين نقطه توقف مخصصه بشكل ديناميكي ، نفذ الخطوات التالية:
  1. أبدا جلسة التصحيح الخاصة بك. من القائمة إنشاء ، اختر التصحيح-الخطوة ال>ه. إذا كنت تستخدم "تتبع مؤشرات الترابط المفردة" أو "تصحيح الأخطاء المتعددة" ، فاتبع الخطوة 1 ا. والا ، فاتبع الخطوة 1b.
    1. اكتب _crtBreakAlloc في نافذه المراقبة. يعرض هذا الخيار رقم التخصيص الحالي الذي سيتوقف عنه البرنامج. يجب ان يكون رقم التخصيص هذا-1 عند بدء تشغيل البرنامج لأول مره.
    2. اكتب {,, msvcr40d} * __p__crtBreakAlloc () في نافذه المراقبة إذا كنت تستخدم Visual c + + 4.0 أو 4.1. اكتب {,, مسفكرتد} * __p__crtBreakAlloc () إذا كنت تستخدم Visual c + + 4.2 أو إصدار أحدث. يعرض هذا الخيار رقم التخصيص الحالي الذي سيتوقف عنه البرنامج. يجب ان يكون رقم التخصيص هذا-1 عند بدء تشغيل البرنامج لأول مره.
  2. انقر نقرا مزدوجا فوق القيمة-1 ، وادخل رقم التخصيص الجديد الذي يسبب نقطه توقف معرفه من قبل المستخدم.
  3. من قائمه التصحيح ، اختر التصحيح ال> الانتقال.
لمزيد من المعلومات حول _crtBreakAlloc ، الرجاء مراجعه "طلبات تخصيص كومه التعقب" في التعليمات عبر الإنترنت.