يرجع RealLoc خالية بعد بعض الوقت أثناء تخصيص كتلة بيانات صغيرة (<500 كيلو بايت) ؛ هناك ذاكرة enoug

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

سؤال

أهلاً!

السؤال القصير هو: ماذا يمكن أن تكون المشكلة؟

الاستخدام الكلي للذاكرة لبرنامجي (الذي يظهره مدير المهام) هو نفسه تقريبًا طوال الوقت (بالقرب من 40 دقيقة) ، ولديّ قرب ذاكرة أخرى مجانية.

تشغيل على Win2003R2.

تخصيص/تحرير الذاكرة مرتفع بما فيه الكفاية - أحتاج إلى التفاعل مع البرامج الأخرى ، وإعداد البيانات لها وحذفها ، عندما تكون قديمة. عدد كتل البيانات غير ثابت.

شكرًا لك!

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

المحلول

عادة لا يوجد سببان فقط

  1. ليس كافي متجاورة الذاكرة ل satify الطلب
  2. فساد الذاكرة

على الرغم من وجود ذاكرة إجمالية كافية في برنامجك لتلبية الطلب ، فقد لا يكون هناك ما يكفي من الذاكرة المتجاورة للقيام بذلك بسبب التجزئة. أفضل طريقة لتحديد ذلك هي استخدام أداة يمكنها الإبلاغ عن الكتل المتجاورة لتحديد ما إذا كان أحد متاح لتلبية طلبك. أعتقد أن إحدى الأدوات في حزمة sysinternals تفعل ذلك.

نصائح أخرى

مع عدم وجود رمز للنظر إليه ، كل ما يمكنني تقديمه لك هو حل بديل.

محاولة reallocجي الذاكرة فقط عندما تحتاج إلى نموها ، ومضاعفة في الحجم بدلاً من مجرد إضافة العديد من البايتات التي تحتاجها. هذا يساعد بشكل كبير مع التفتت. نظرًا لأنك قلت أن لديك ذاكرة كافية ، لا تقلق بشأن تحريرها عند الانتهاء ، فقط احتفظ بها هناك إذا كان ذلك معقولًا بما فيه الكفاية.

اجعل هدفك هو تقليل التفتت بأي ثمن ، ويبدو أن الحفاظ على مجموعة عمل 200 ميجابايت جيدة تمامًا بالنسبة لي لقوة الحوسبة اليوم. إذا تجاوزت 500 ميغابايت في كثير من الأحيان ويتم تشغيل البرنامج لفترات طويلة من الزمن ، يمكنك البدء في البحث في تحسين مجموعة العمل ، ولكن حتى ذلك الحين لا تقلق بشأنه.

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