سؤال

أنا أبحث عن وسيلة لعلاج أعراض DLL المتسربة على الأقل. بينما تدعي المكتبة (OpenCascade) أنها توفر مديرًا للذاكرة ، إلا أنني لم أتمكن بعد من جعلها تحرر أي ذاكرة مخصصة لها.

أرغب على الأقل في وضع المكالمات على هذه الوحدة في "صندوق الرمل" ، من أجل منع طلبي من عدم فقدان الذاكرة بينما لم يعد تشغيل وحدة OCC أكثر من ذلك.

سؤالي هو: على الرغم من أنني أدرك أنه سيكون اختراقًا قبيحًا (TM) للقيام بذلك ، هل من الممكن توضيح امتداد الذاكرة لاستخدام تتبع مجالات الذاكرة التي استخدموها من أجل إطلاقها بنفسي عندما انتهيت؟

أو هل سيكون ذلك قبيحًا للاختراق ويجب أن أحاول حل المشكلات بخلاف ذلك؟

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

المحلول

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

نصائح أخرى

من المحتمل أن يكون استخدام مكتبة غير مكسورة أسهل بكثير ، ولكن إذا كان بديلًا غير متاح ، فيمكنك محاولة اعتراض مكالمات التخصيص. إذا لم تكن المكتبة "مُحسّنة" بشكل سيء للغاية (على وجه التحديد وظيفة ضملة) ، فيمكنك تفكيكها وتحديد موقع Malloc والوظائف المجانية ؛ عند التحميل ، يمكنك استبدال كل 4 (أو 8 على نظام P64) تسلسل البايت الذي يشفر هذا المعالجة مع واحد يشير إلى مخصص الذاكرة الخاص بك. هذا مضمون تقريبًا ليكون عربات عربات التي تجرها الدواب وعدم القراءة ، على الرغم من ذلك ، لذلك لا تفعل ذلك إذا كنت تستطيع العثور على بديل عمل.

يحرر:

Saw @sharptooth إجابة ، والتي لديها فرصة أفضل بكثير للعمل. ما زلت أنصح بمحاولة العثور على بديل.

يجب أن تسأل رأي رومان ليجين - اعتاد العمل في OCC. لديه منشور واحد على الأقل يذكر إدارة الذاكرة http://opencascade.blogspot.com/2009/06/developing-paralled-applications-with_23.html.

إذا سألت بشكل جيد ، فقد يكتب حتى منشورًا يفسر الداخلية في MMGT.

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