الحمولة الزائدة مشغل عالمي جديد / حذف في C ++

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

  •  11-07-2019
  •  | 
  •  

سؤال

وأنا أحاول أن تفرط في مشغل عالمي جديد وحذف لتطبيق حساسة الأداء. لقد قرأت المخاوف وصفها في http://www.informit.com /articles/article.aspx؟p=30642&seqNum=3 و التوصيات لاستخدام مخصص إنتل TBB في <لأ href = "http://www.intel.com/technology/itj/2007/v11i4/5-foundations /5-memory.htm "يختلط =" نوفولو noreferrer "> http://www.intel.com/technology/itj/2007/v11i4/5-foundations/5-memory.htm

وبما أنني الحمولة الزائدة الجديدة وحذف للمرة الأولى، ولدي بعض الأسئلة.

هل يجب إضافة بلدي رأس جديد Allocator.h (أو Pre.h) التي تحتوي على وظيفة جديدة طاقتها في جميع الملفات التي تحتوي على المكالمات "الجديدة"؟ هذا هو مملة.

وأو ينبغي أن استخدام "دول مجلس التعاون الخليجي -Include Allocator.h ..." التي تضم Allocator.h (قبل) في كل وحدة الترجمة؟ أريد أن تبقي منصة كود مستقلة قدر الإمكان. هل كل المجمعين تدعم شيء مماثل الى "دول مجلس التعاون الخليجي -Include"؟

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

المحلول

إذا كنت تريد أن تفرط في operator new العالمية وoperator delete، كل ما تحتاجه لتنفيذ ذلك. أنت لا تحتاج إلى تحديد ذلك بوضوح في كل مكان لأنه بالفعل يعرف بأنه جزء من لغة.

وتحرير: إذا كنت ترغب في تعريف جديد مشغل يأخذ معلمات مختلفة، ثم عليك أن # تضمين ذلك في كل مكان. ولكن يمكنك أن تفعل ذلك متروك لكم. انها في الغالب مسألة من النمط.

ولا ننسى لتنفيذ جميع أنواع من مشغل عالمي جديد وحذف: new، new[]، delete، delete[]، والمتغيرات std::nothrow

نصائح أخرى

إذا كنت باستخدام Visual Studio واستخدام رؤوس المترجمة مسبقا، ثم يمكنك رمي التضمين إلى هناك. وأعتقد أن دول مجلس التعاون الخليجي لديها شكل من أشكال رؤوس precompiling كذلك، والذي من شأنه أن يحسن مرات تجميع الخاص بك أيضا.

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