أنواع كتل في كومة يصحح

ينطبق هذا الموضوع على:

النسخة

Visual Basic

C#‎

#F

C++‎

مطور الويب

Express

الموضوع الذي لا ينطبق الموضوع الذي لا ينطبق الموضوع الذي لا ينطبق

أصلي فقط

الموضوع الذي لا ينطبق

pro ، Premium و Ultimate

الموضوع الذي لا ينطبق الموضوع الذي لا ينطبق الموضوع الذي لا ينطبق

أصلي فقط

الموضوع الذي لا ينطبق

يتم تعيين كل حظر ذاكرة في كومة ذاكرة المؤقتة للتصحيح بأحد تخصيص خمس أنواع. هذه أنواع يتم تعقبها والإبلاغ عن طريقة مختلفة لأغراض الكشف عن تسرب وتقارير الحالة. يمكنك تحديد نوع للكتلة بتخصيصها باستخدام اتصال مباشر إلى واحد من تخصيص كومة ذاكرة مؤقتة التصحيح يعمل مثل _malloc_dbg . الأنواع الخمسة من كتل ذاكرة في كومة ذاكرة المؤقتة للتصحيح (مجموعة في العضو nBlockUse للبنية _CrtMemBlockHeader) كـ التالي:

  • _normal_block
    مكالمة إلى malloc أو calloc إنشاء حظر عادي. إذا كنت تريد استخدام كتل عادي فقط، وقد لا توجد حاجة لحظر العميل، قد تحتاج إلى تعريف _CRTDBG_MAP_ALLOC ، الذي يجعل الجميع المكالمات تخصيص كومة ذاكرة مؤقتة ليتم تعيينها إلى بهم يصحح المناظرة في يصحح البناء. يسمح هذا الملف اسم وخط الأرقام معلومات حول كل استدعاء تخصيص إلى أن sإلىred في عنوان حظر المطابق.

  • _CRT_BLOCK
    كتل ذاكرة المخصصة داخليا بالعديد من الدالات مكتبة وقت التشغيل بأنها كـ CRT كتل حيث أنها يمكن معالجة شكل منفصل. كـ نتيجة تسرب للكشف عن التحديثات الأمنية وعمليات غير ذلك تحتاج لا تتأثر بهذه. يخصص يجب عدم يخصص reallocate أو تحرير أي حظر من CRT نوع.

  • _CLIENT_BLOCK
    تطبيق يمكن الاحتفاظ بمقطع صوتي مجموعة معينة من عمليات التخصيص لأغراض التصحيح بواسطة تخصيص لهم هذا النوع من حظر ذاكرة، باستخدام استدعاءات صريحة خاص إلى الوظائف كومة ذاكرة المؤقتة للتصحيح. يخصص MFC، على سبيل المثال، الجميع من CObjects ككتل العميل؛ والتطبيقات الأخرى قد الاحتفاظ بكائنات ذاكرة المختلفة في كتل العميل. subtypes من العميل كما يمكن تحديد الكتل لتقسيمات تعقب أكبر. لتعيين أنواع فرعية الكتل عميل، Shift زر زر الرقم ترك 16 بت و ORعليها مع _CLIENT_BLOCK. فعلى سبيل المثال:

    #define MYSUBTYPE 4
    freedbg(pbData, _CLIENT_BLOCK|(MYSUBTYPE<<16));
    

    دالة ربط الموفر من قبل العميل لتفريغ الكائنات المخزنة في كتل العميل ويمكن تثبيتها باستخدام _CrtSetDumpClient ، وسيتم تسمية ثم كلما حظر عميل هو تفريغ بوظيفة تصحيح. أيضا، يمكن استخدام _CrtDoForAllClienإلىbjects إلى استدعاء دالة معينة تم توفيره من قبل تطبيق لكل حظر العميل في كومة ذاكرة مؤقتة للتصحيح.

  • _free_block
    عادة، يتم تمت إزالته الكتل التي تم تحريرها من قائمة. للتحقق من التي تحرير الذاكرة هو ما لا يزال الكتابة إليها أو لمحاكاة شروط ذاكرة منخفضة، يمكنك اختيار الاحتفاظ بكتل freed على lهوt المرتبطة، ووضع علامة حر وتعبئة بقيمة البايت معروفة (0xDD حاليا).

  • _ignore_block
    هو المحتملة لإيقاف تشغيل العمليات التصحيح كومة ذاكرة مؤقتة لفترة من الوقت. خلال هذه الفترة، كتل ذاكرة التي يتم الاحتفاظ بها في القائمة، ولكن تم وضع علامة كـ تجاهل كتل.

إلى تحديد نوع ونوع فرعي من حظر معينة، استخدم دالة _CrtReportBlockType ووحدات الماكرو _BLOCK_TYPE _BLOCK_SUBTYPE. يتم تعريف وحدات الماكرو (في crtdbg.h)، كـ التالي:

#define _BLOCK_TYPE(block)          (block & 0xFFFF)
#define _BLOCK_SUBTYPE(block)       (block >> 16 & 0xFFFF)

راجع أيضًا:

المرجع

_CrtReportBlockType

موارد أخرى

عرض CRT يصحح كومة ذاكرة مؤقتة