هل يتم إدارة ذاكرة Visual C++ بواسطة إطار عمل Dot Net

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

  •  09-06-2019
  •  | 
  •  

سؤال

لقد كنت أتعامل مؤخرًا مع خطأ أثناء الوصول إلى MAPI عبر إطار عمل .NET (كما هو موضح في هذا المقال).لقد تركت الآن سلسلة من أخطاء انتهاك الوصول إلى الذاكرة.

لتجاوز المشكلات، كنت أحاول استخدامها مكون الطرف الثالث هذا, ، الذي يحتوي على Visual C++ الأساسية.لسوء الحظ - لا نزال نواجه نفس الأخطاء.

أنا شخصياً لم أستخدم Visual C++ مطلقًا، لكن سؤالي هو:إذا تم تجميع مكتبة C++ باستخدام Visual Studio 2005، باستخدام Visual C++ - فهل تصبح ذاكرة المشروع مُدارة بواسطة إطار عمل .NET أيضًا، مما يجعلها عرضة لنفس المشكلات مثل مكتبات .NET التي نتعامل معها استخدام؟أم أنني أنبح الشجرة الخطأ؟

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

المحلول

لست متأكدًا تمامًا مما تطلبه، لكنني سأجربه.

Visual C++ عبارة عن مترجم C/C++ خالص، لذا لا يحتوي على أي إدارة لذاكرة .NET، ولا أي وقت تشغيل خاص به - يجب عليك استدعاء جديد وحذفه يدويًا.

يوفر .NET أيضًا C++/CLI، وهو إصدار معدل قليلاً من C++ يستهدف وقت تشغيل .NET، ويدرك GC - على سبيل المثال.تتم إدارة ذاكرته بواسطة وقت التشغيل .NET.

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

نصائح أخرى

لقد ذكرت الإجابتان السابقتان " Managed C++ "، وهذا عبارة عن برنامج تثبيت قديم قاموا به للسماح لك باستخدام C++ المُدار في بيئة .NET.لم يكن مواطنًا من الدرجة الأولى - على عكس C++/CLI (نص الرابط.ولكن للإجابة على سؤالك الأصلي، لا، لا تتم إدارة Visual C++ بواسطة وقت تشغيل .NET.تتم إدارة C++ وC++/CLI.

ما لم تكن تستخدم Managed C++ (وهذا لا يبدو أنك تستخدمه)، فلا، لا تتم إدارة الذاكرة بواسطة CLR.

الطريقة الموصى بها للتحدث إلى Exchange في .Net هي عبر WebDAV.

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