يدير كتل الذاكرة في مخزن مؤقت ينمو بشكل رتيب مع تخصيص خالٍ من الاستثناءات وتحرير مجمع.
مُولَّد بالذكاء الاصطناعيغير مُراجَعالنموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: 993d3b66f0fcالمصدرأسئلة مفتوحة (2)
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني
يدير كتل الذاكرة في مخزن مؤقت ينمو بشكل رتيب مع تخصيص خالٍ من الاستثناءات وتحرير مجمع.
توفر الفئة ara::core::MonotonicBufferResource مورد ذاكرة متخصصًا لعمليات التخصيص السريعة والرتبية من مخزن مؤقت ثابت للذاكرة أو عبر مورد upstream. تُمنح الذاكرة المطلوبة تدريجيًا ولا يتم تحريرها فورًا عند عمليات إلغاء التخصيص الفردية، بل تتم إعادة تعيينها مجمعة فقط عبر release() ([SWS_CORE_06530]). تم الإعلان عن جميع العمليات لتكون خالية من الاستثناءات تمامًا، حيث تتم الإشارة إلى نقص الذاكرة عن طريق إرجاع nullptr بدلاً من إطلاق استثناء ([SWS_CORE_06569]). والمثيلات غير قابلة للنسخ وتتطلب مزامنة خارجية في حالة الوصول المتوازي من خيوط متعددة.
السياق
تُعد الفئة ara::core::MonotonicBufferResource مورد ذاكرة ملموسًا ضمن الوحدة core في منصة AUTOSAR Adaptive وترث من الفئة الأساسية ara::core::MemoryResource. وهي تكيف مفهوم std::pmr::monotonic_buffer_resource المعروف من معيار ++C من [mem.res.monotonic.buffer] لتطبيقات المركبات المحددة زمنيًا وذات الصلة بالسلامة. يتمثل الدور الأساسي للفئة في تلبية طلبات التخصيص بأقل قدر من العبء الإداري من نطاق ذاكرة مستمر، وذلك عن طريق منح الذاكرة بشكل رتيب.
يعمل كشركاء تفاعل من ناحية المكونات المستدعية والمخصصات متعددة الأشكال والحاويات التي تطلب كتل الذاكرة في وقت التشغيل. ومن ناحية أخرى، تتفاعل الفئة مع مورد ذاكرة upstream اختياري ذي مستوى أعلى (MemoryResource). يمكن تمرير مورد upstream هذا عبر منشئات مثل [SWS_CORE_06521] والاستعلام عنه عبر طريقة الوصول upstream_resource() ([SWS_CORE_06531]).
دورة الحياة
يمكن التحكم في تهيئة ara::core::MonotonicBufferResource عبر عدة منشئات. بالإضافة إلى المنشئ الافتراضي الخالي من المعلمات ([SWS_CORE_06524])، تتوفر تحميَلات زائدة تقبل مورد upstream صريحًا ([SWS_CORE_06521])، أو تحدد حجمًا أوليًا للمخزن المؤقت ([SWS_CORE_06525]، [SWS_CORE_06522])، أو تستخدم نطاق ذاكرة خام مقدمًا خارجيًا (void* buffer، std::size_t buffer_size) كمخزن مؤقت أولي ([SWS_CORE_06526]، [SWS_CORE_06523]).
فيما يتعلق بعلاقات الملكية، تُعرَّف الفئة بأنها غير قابلة للنسخ بشكل صارم: حيث تم حذف منشئ النسخ ([SWS_CORE_06527]) وعامل تشغيل التعيين بالنسخ ([SWS_CORE_06529]) (=delete). وعلى عكس معيار ISO-14882، تنفذ فئة AUTOSAR مع ذلك دلالات نقل صريحة عبر منشئ النقل ([SWS_CORE_06576]) وعامل تشغيل التعيين بالنقل ([SWS_CORE_06577])، واللذين تم تعريف كل منهما كـ noexcept=default.
يتم التدمير عبر المدمر ~MonotonicBufferResource() ([SWS_CORE_06528]). ويكمن انحراف جوهري لـ AUTOSAR عن المعيار في أن المدمر لم يُعلن كافتراضي (virtual). وعبر الطريقة release() ([SWS_CORE_06530])، يمكن إعادة تعيين كامل الذاكرة المخصصة قبل انتهاء دورة حياة الكائن.
يتضمن تسلسل الاستخدام النمطي التوفير والتخصيص المستمر والتحرير المجمع:
إنشاء المثيل: ينشئ التطبيق مثيلاً، على سبيل المثال مع تحديد حجم المخزن المؤقت ومورد upstream ([SWS_CORE_06522]) أو مخزن مؤقت ثابت ([SWS_CORE_06526]).
التخصيص: تتم تلبية طلبات الذاكرة عبر الطريقة المحمية do_allocate(bytes, alignment) ([SWS_CORE_06569]). وإذا لم يكن المخزن المؤقت الحالي كافيًا، يستمد المثيل مخزنًا مؤقتًا جديدًا من مورد upstream.
إلغاء التخصيص: لا تؤدي استدعاءات do_deallocate(p, bytes, alignment) ([SWS_CORE_06570]) إلى تقليص المخزن المؤقت بشكل فردي؛ بل يواصل مؤشر التخصيص الداخلي التقدم بشكل رتيب.
إعادة تعيين المخزن المؤقت: باستخدام release() ([SWS_CORE_06530])، يتم تحرير جميع كتل الذاكرة المستمدة عبر upstream دفعة واحدة، ويصبح المخزن المؤقت جاهزًا لدورات جديدة.
مقارنة الموارد: عبر do_is_equal() ([SWS_CORE_06571])، يمكن التحقق مما إذا كان موردا الذاكرة متطابقين.
تتبع الفئة متطلبات صارمة للأنظمة المدمجة الخالية من الاستثناءات: تم الإعلان عن جميع الدوال الأعضاء والمنشئات وعوامل التشغيل كـ noexcept وتوفر أمانًا كاملاً ضد الاستثناءات.
في حالة الخطأ، يختلف السلوك عمدًا عن المكتبة القياسية:
فشل التخصيص: إذا تعذر تلبية طلب في do_allocate() ([SWS_CORE_06569])، فلن يتم طرح أي استثناء std::bad_alloc، بل يتم إرجاع nullptr. يجب على المتصلين فحص القيمة المرجعة بحثًا عن nullptr بشكل إلزامي.
خطأ أثناء إلغاء التخصيص: إذا حدث خطأ أثناء التحرير في do_deallocate() ([SWS_CORE_06570])، فسيتم تجاهله ضمنيًا وفقًا للمواصفة.
التدمير عبر مؤشر أساسي: نظرًا لأن مدمر الكائن ([SWS_CORE_06528]) ليس افتراضيًا، فمن المحتمل أن يؤدي التدمير عبر مؤشر إلى الفئة الأساسية MemoryResource إلى سلوك غير محدد (تفسير: يجب أن يتم التدمير عبر النوع المحدد). سؤال Q-add18020b48f3131 (مفتوح)
تم إنشاء هذا الدليل بواسطة نظام ذكاء اصطناعي بناءً على مواصفات AUTOSAR Adaptive R25-11.
except for the following deviations: 1. The function is noexcept 2. The function returns nullptr instead of (potentially) throwing a std::bad_alloc exception ≙ std::bad_alloc
As per corresponding usage in [mem.res.monotonic.buffer] except for the following deviations: 1. The function is noexcept 2. The function returns nullptr instead of (potentially) throwing a std::bad_alloc exception
مُولَّد بالذكاء الاصطناعيغير مُراجَعالنموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: 601be17f5d68المصدرأسئلة مفتوحة (1)
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني
الاستخدام
تُستخدم دالة العضو المحمية do_allocate للفئة ara::core::MonotonicBufferResource لتخصيص مساحات الذاكرة وفقًا لـ [mem.res.monotonic.buffer][SWS_CORE_06569]. وهي تنفذ الواجهة الافتراضية البحتة do_allocate للفئة الأساسية ara::core::MemoryResource[SWS_CORE_06566]. كتفسير، من المحتمل أن يتم الاستدعاء المتزامن بشكل أساسي بطريقة غير مباشرة عبر طرق التعيين العامة للفئة الأساسية بسبب إمكانية الرؤية protected. سؤال Q-21b2da19c0fd7f8f (مفتوح) تأخذ الدالة الحجم المطلوب بالبايت بالإضافة إلى المحاذاة المرغوبة (alignment).
معالجة الأخطاء وأمان الاستثناءات
على عكس سلوك ++C القياسي، لا تُطلق الدالة استثناء std::bad_alloc عند حدوث أخطاء في التخصيص، بل تُرجع بدلاً من ذلك nullptr[SWS_CORE_06569]. وبفضل التصريح باستخدام noexcept، تم تحديد الطريقة بأنها آمنة من الاستثناءات [SWS_CORE_06569]. لذلك يجب على المستدعين دائمًا التحقق من النتيجة ومقارنتها بـ nullptr لاكتشاف عدم كفاية الذاكرة.
التزامن والتفاعل
تم تحديد الطريقة على أنها غير آمنة بالنسبة للخيوط [SWS_CORE_06569]. إذا بدأت عمليات التعيين بشكل متزامن من خيوط متعددة، فيجب إجراء المزامنة خارجيًا عبر جهة الاستدعاء. يتوافق هذا مع سلوك ara::core::UnsynchronizedPoolResource::do_allocate[SWS_CORE_00058]، في حين تم تصميم ara::core::SynchronizedPoolResource::do_allocate لتكون آمنة بالنسبة للخيوط للاستدعاءات المتزامنة [SWS_CORE_00061].
تم إنشاء ملاحظة الاستخدام هذه آليًا استنادًا إلى مواصفة AUTOSAR R25-11.
As per corresponding usage in [mem.res.monotonic.buffer] except for the following deviations: 1. The function is noexcept 2. If unsuccessful: errors will be silently ignored
مُولَّد بالذكاء الاصطناعيغير مُراجَعالنموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: e7d49ed79e7cالمصدرأسئلة مفتوحة (1)
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني
الاستخدام
تُستخدم دالة العضو do_deallocate للفئة ara::core::MonotonicBufferResource لإلغاء تخصيص مساحات الذاكرة وفقًا لـ [SWS_CORE_06570]. وهي معرفة عبر ملف الترويسة #include "ara/core/memory_resource.h"[SWS_CORE_06570]. تأخذ الدالة مؤشرًا p إلى مساحة الذاكرة المراد تحريرها بالإضافة إلى المعلمتين bytes وalignment (كل منهما من النوع std::size_t)، ولا تُرجع أي قيمة (void) [SWS_CORE_06570]. تتبع الدلالات التحديد الوارد في [mem.res.monotonic.buffer] مع انحرافات AUTOSAR محددة [SWS_CORE_06570].
معالجة الأخطاء
تم التصريح عن الدالة كـ noexcept وتضمن أمان الاستثناءات (exception safe) [SWS_CORE_06570]. إذا حدث خطأ أثناء التنفيذ، فسيتم تجاهله ضمنيًا (errors will be silently ignored) [SWS_CORE_06570]. لا توجد قيم مُرجعة ولا رموز أخطاء محددة للإبلاغ عن الأخطاء.
التزامن والقيود
فيما يتعلق بالتزامن، تم تحديد do_deallocate على أنها غير آمنة بالنسبة للخيوط (not thread-safe) [SWS_CORE_06570]. لا يُسمح بالاستدعاء المتزامن من عدة خيوط دون مزامنة خارجية. تمتلك الطريقة مستوى الرؤية protected وتتجاوز الواجهة الافتراضية البحتة للفئة الأساسية ara::core::MemoryResource[SWS_CORE_06567]. تفسير: من المحتمل معالجة الاستدعاءات بانتظام عبر واجهة إلغاء التخصيص العامة للفئة الأساسية. سؤال Q-6916292acaa8993b (مفتوح)
تفاعل
بينما تنص الفئة الأساسية ara::core::MemoryResource على دالة إلغاء التخصيص بمستوى رؤية خاص [SWS_CORE_06567]، تقوم MonotonicBufferResource وكذلك الفئات المرتبطة ara::core::SynchronizedPoolResource[SWS_CORE_00041] وara::core::UnsynchronizedPoolResource[SWS_CORE_00059] بتنفيذها بشكل محمي (protected) مع معالجة صامتة للأخطاء. وعلى عكس مورد التجمع المتزامن [SWS_CORE_00041]، والذي يُعد آمنًا بالنسبة للخيوط، يتطلب MonotonicBufferResource مثل ara::core::UnsynchronizedPoolResource[SWS_CORE_00059] استبعاد الوصول المتوازي.
تم إنشاء ملاحظة الاستخدام هذه بواسطة ذكاء اصطناعي وتستند إلى التحديدات الواردة في مواصفة AUTOSAR Adaptive R25-11.
As per corresponding usage in [mem.res.monotonic.buffer] except for the following deviations: 1. The function is noexcept
مُولَّد بالذكاء الاصطناعيغير مُراجَعالنموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: fc4ade44f9c3المصدر
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني
تتجاوز الطريقة protected do_is_equal للفئة ara::core::MonotonicBufferResource الواجهة الافتراضية البحتة للفئة الأساسية ara::core::MemoryResource وفقًا لـ [SWS_CORE_06571]. وتقارن النسخة الحالية بشكل متزامن مع const MemoryResource &other الممررة للتحقق من التساوي فيما يتعلق بدلالات إدارة الذاكرة.
الاستخدام والدلالات
يتم الاستدعاء عادةً بشكل غير مباشر عبر الواجهة العامة لـ MemoryResource. وفقًا لـ [SWS_CORE_06571]، يتبع السلوك الاستخدام في [mem.res.monotonic.buffer]، ولكنه يُظهر انحرافًا صريحًا يتمثل في التصريح عن الدالة كـ noexcept. القيمة المُرجعة هي bool، والتي توضح ما إذا كان الموردان قابلين للتبديل أو متطابقين.
معالجة الأخطاء والتزامن
أمان الاستثناءات: تم تحديد الدالة كـ exception safe ولا تُطلق أي استثناءات استنادًا إلى توقيع noexcept وفقًا لـ [SWS_CORE_06571]. ولا توجد رموز أخطاء محددة أو رسائل DET/DEM.
أمان الخيوط: تم تصنيف العملية كـ thread-safe ([SWS_CORE_06571]) ويمكن تنفيذها بشكل متزامن.
تفاعل
تنفذ الدالة العقد الافتراضي من ara::core::MemoryResource ([SWS_CORE_06568]). وتوجد تطبيقات مماثلة لمقارنة التساوي أيضًا في موارد ذاكرة أخرى مثل ara::core::SynchronizedPoolResource ([SWS_CORE_00042]) وara::core::UnsynchronizedPoolResource ([SWS_CORE_00060]).
تم توليد هذا النص بواسطة ذكاء اصطناعي بناءً على المواصفة R25-11.
As per corresponding usage in [mem.res.monotonic.buffer] except for the following deviations: 1. The function is noexcept
مُولَّد بالذكاء الاصطناعيغير مُراجَعالنموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: 082c843665ceالمصدرأسئلة مفتوحة (1)
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني
تُستخدم الدالة العضو release() للفئة ara::core::MonotonicBufferResource ([SWS_CORE_06530]) لتحرير الذاكرة التي يديرها مورد المخزن المؤقت. ويتم الاستدعاء بشكل متزامن، ولا يقبل أي معلمات ولا يُرجع أي قيمة معادة (void).
فيما يتعلق بمعالجة الأخطاء، تم التصريح عن الدالة بـ noexcept وتحديدها كآمنة للاستثناءات (exception safe) ([SWS_CORE_06530]). ولا توجد رموز خطأ محددة، ولا يتم إرسال أي رسائل خطأ إلى جهات تشخيص أو إبلاغ مركزية.
فيما يتعلق بالتزامن، تم تصنيف release() صراحةً على أنه غير آمن بالنسبة للخيوط (not thread-safe) ([SWS_CORE_06530]). لا يُسمح بالوصول المتزامن إلى نفس النسخة دون مزامنة خارجية. تفسير: استنادًا إلى الدلالات المستعارة من [mem.res.monotonic.buffer]، من المحتمل أن تصبح كافة مساحات الذاكرة المخصصة مسبقًا عبر هذا المورد غير صالحة بمجرد الاستدعاء. سؤال Q-bd46bd9971926d95 (مفتوح)
في إطار تفاعل موارد الذاكرة من #include "ara/core/memory_resource.h"، تختلف الدالة في سلوك التزامن عن ara::core::SynchronizedPoolResource::release()، والتي تُعد آمنة بالنسبة للخيوط ([SWS_CORE_00037])، بينما تتصرف بصورة مماثلة لـ ara::core::UnsynchronizedPoolResource::release()، والتي تُعد أيضًا غير آمنة بالنسبة للخيوط ([SWS_CORE_00065]).
تم إنشاء هذا النص بواسطة ذكاء اصطناعي بناءً على متطلبات مواصفات AUTOSAR R25-11.
As per corresponding usage in [mem.res.monotonic.buffer] except for the following deviations: 1. The function is noexcept
مُولَّد بالذكاء الاصطناعيغير مُراجَعالنموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: 34a11a1fee7aالمصدرأسئلة مفتوحة (1)
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني
تُرجع دالة العضو upstream_resource() للفئة ara::core::MonotonicBufferResource بشكل متزامن مؤشرًا إلى مورد الذاكرة الرئيسي من النوع MemoryResource*[SWS_CORE_06531]. يتم الاستدعاء عبر ملف الترويسة #include "ara/core/memory_resource.h" ولا تأخذ الدالة أي معلمات [SWS_CORE_06531]. تفسير: من المحتمل أن يعمل مورد الذاكرة المُرجع كذاكرة تخزين مؤقت رئيسية في حال كانت الذاكرة المؤقتة الداخلية للنسخة غير كافية لعمليات التخصيص. سؤال Q-e01e234e281bc4c6 (مفتوح)
فيما يتعلق بمعالجة الأخطاء وأمان الاستثناءات، تم التصريح عن الطريقة على أنها noexcept وهي آمنة تمامًا من الاستثناءات (exception safe) [SWS_CORE_06531]. لا تتضمن المواصفة رموز أخطاء محددة أو كائنات خطأ أو رسائل تشخيصية مثل DET أو DEM لهذا الاستدعاء الذي يقتصر على كونه دالة جلب (Getter) بحتة [SWS_CORE_06531].
فيما يتعلق بالتزامن، تم تحديد الطريقة على أنها const بالإضافة إلى كونها آمنة بالنسبة للخيوط (thread-safe) [SWS_CORE_06531]. ونتيجة لذلك، يمكن الاستعلام عن المؤشر إلى مورد Upstream من خيوط متعددة بالتوازي دون الحاجة إلى مزامنة خارجية.
تتبع الدلالات الوظيفية التحديد الوارد في [mem.res.monotonic.buffer]، ولكنها تظهر انحرافًا معياريًا يتمثل في أن الدالة محددة صراحةً في معيار AUTOSAR Adaptive كـ noexcept[SWS_CORE_06531]. وتستخدم الفئات المرتبطة ara::core::SynchronizedPoolResource[SWS_CORE_00038] وكذلك ara::core::UnsynchronizedPoolResource[SWS_CORE_00056] نمط واجهة مماثل لتوفير المورد الرئيسي.
تم إنشاء هذا النص بواسطة ذكاء اصطناعي بناءً على بيانات المواصفة.
As per corresponding usage in [mem.res.monotonic.buffer] except for the following deviations: 1. The function is noexcept 2. The function is not virtual
gemini-3.8-flash-low· 2026-10-13 · الأصل الألماني