يعمل كواجهة أساسية لتخصيص الذاكرة وتحريرها دون استثناءات.
مُولَّد بالذكاء الاصطناعيغير مُراجَعالنموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: efd95fd8a941المصدرأسئلة مفتوحة (2)
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني
يعمل كواجهة أساسية لتخصيص الذاكرة وتحريرها دون استثناءات.
يوفر الصنف واجهة أساسية مجردة لموارد الذاكرة متعددة الأشكال، والمصممة على غرار الواجهة القياسية لـ C++. ومن خلال نمط الواجهة غير الافتراضية (Non-Virtual Interface)، يفوض طلبات التخصيص والتحرير إلى أصناف الموارد المشتقة [SWS_CORE_06503]. وعلى عكس معيار C++، تم التصريح عن جميع دوال الواجهة بأنها آمنة من الاستثناءات، ولهذا السبب لا يُشار إلى أخطاء الذاكرة عبر استثناء، بل من خلال إرجاع مؤشر فارغ (null pointer) [SWS_CORE_06566]. بالإضافة إلى ذلك، فإن عمليات التخصيص والتحرير ليست آمنة خيطيًا بشكل افتراضي.
السياق
يوفر الصنف ara::core::MemoryResource في AUTOSAR Adaptive Platform (الوحدة النمطية core) واجهة أساسية مجردة لإدارة الذاكرة، والمستندة إلى النوع القياسي لـ C++ std::pmr::memory_resource. وهو بمثابة أساس مشترك لاستراتيجيات التخصيص القابلة للتبديل، ويفصل هياكل البيانات المستدعية عن الآليات الفعلية لتوفير الذاكرة. وكنقطة اختلاف جوهرية عن معيار ISO-C++، تتخلى مواصفة AUTOSAR تمامًا عن الاستثناءات الديناميكية وتصيغ ضمانات noexcept صارمة لجميع العمليات [SWS_CORE_06501].
تتبع البنية نمط الواجهة غير الافتراضية (NVI): تحدد دوال الأعضاء العامة غير الافتراضية الواجهة الثابتة للمستدعين، بينما يجب تنفيذ السلوك الفعلي في الأصناف المشتقة عبر دوال أعضاء خاصة وافتراضية صرفة. تفسير: تشتق موارد الذاكرة المحددة من ara::core::MemoryResource وتتجاوز الواجهات الأساسية الخاصة do_allocate[SWS_CORE_06566]، وdo_deallocate[SWS_CORE_06567]، بالإضافة إلى do_is_equal[SWS_CORE_06568]، لتوفير إدارة مخازن مؤقتة أو تجمعات خاصة بالتطبيق. سؤال Q-d09d47b0a8f6b822 (مفتوح)
دورة الحياة
يتم إنشاء مثيلات التخصيصات عبر منشئ الفئة الافتراضي الخالي من المعاملات، والمحدد كـ noexcept=default[SWS_CORE_06501]. وبالمثل، يتوفر منشئ نسخ noexcept [SWS_CORE_06502] ومعامل إسناد نسخ noexcept [SWS_CORE_06507]. بالإضافة إلى معيار C++، يحدد AUTOSAR صراحةً منشئ نقل [SWS_CORE_06574] ومعامل إسناد نقل [SWS_CORE_06575]، واللذين تم تحديدهما كـ noexcept=default.
يتم تأمين دورة حياة المثيلات متعددة الأشكال بواسطة مدمر فئة افتراضي، تم التصريح عنه بأنه آمن من الاستثناءات [SWS_CORE_06506]. وفيما يتعلق بالتزامن، تجدر الإشارة إلى أن كلاً من مدمر الفئة ودوال التخصيص والتحرير allocate[SWS_CORE_06503] وdeallocate[SWS_CORE_06504] محددة على أنها غير آمنة خيطيًا. تفسير: يُرجح أن تكون آليات المزامنة الأعلى مستوى أو الفئات الفرعية المتخصصة مسؤولة عن عمليات التخصيص والتحرير الآمنة خيطيًا، نظرًا لأن الدوال الأساسية محددة على أنها غير آمنة خيطيًا. سؤال Q-adac4b6cf6e0db7c (مفتوح) في المقابل، صُمم فحص التساوي عبر is_equal صراحةً ليكون آمنًا خيطيًا [SWS_CORE_06505].
مسار الاستخدام
يتألف المسار الأساسي في إدارة الذاكرة من طلب كتل الذاكرة، وفحص الهوية الاختياري، والتحرير اللاحق لها عبر واجهة NVI العامة:
تخصيص الذاكرة: يستدعي المستدعي allocate مع تحديد الحجم بالبايت والمحاذاة الاختيارية [SWS_CORE_06503]. وتفوض الدالة داخليًا إلى الدالة الخاصة الافتراضية الصرفة do_allocate للصنف الفعلي [SWS_CORE_06566].
فحص التساوي: لتحديد ما إذا كان موردا ذاكرة متكافئين ويمكن تحرير ذاكرة أحدهما بواسطة الآخر، يستدعي المستخدم is_equal[SWS_CORE_06505]، مما يفوض إلى do_is_equal[SWS_CORE_06568].
تحرير الذاكرة: بعد اكتمال الاستخدام، تتم إعادة الكتلة عبر deallocate مع تحديد المؤشر، والحجم بالبايت، والمحاذاة [SWS_CORE_06504]، مما يؤدي إلى إعادة التوجيه الداخلي إلى do_deallocate[SWS_CORE_06567].
تتمثل السمة المركزية للصنف في الاستبعاد التام للاستثناءات. فبينما ينص معيار ISO-C++ في حالة نفاد الذاكرة على طرح استثناء من النوع std::bad_alloc، يحيد AUTOSAR عن ذلك عن قصد: فإذا فشل التخصيص في allocate أو do_allocate، تُرجع الدالة إلزاميًا nullptr[SWS_CORE_06503]، [SWS_CORE_06566]. ومن خلال السمة [[nodiscard]] في allocate، يتم حث المستدعي على استلام قيمة الإرجاع دائمًا والتحقق من صحتها قبل الوصول.
بالنسبة لعمليتي التحرير deallocate وdo_deallocate، يتم تجاهل أي أخطاء تحدث أثناء إعادة الذاكرة بصمت [SWS_CORE_06504]، [SWS_CORE_06567]. ولا يتم طرح استثناءات ولا إرجاع رموز خطأ، مما يسهل الامتثال لمتطلبات الوقت الفعلي والسلامة الصارمة في سياق المنصة التكيفية.
تمت معالجة هذا النص بواسطة ذكاء اصطناعي ويستند حصريًا إلى مواصفات AUTOSAR Adaptive Platform 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
in [15] 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] 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 · درجة الحرارة: غير قابل للتحكم · الموجّه: 6735dc6d085fالمصدر
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني
تُستخدم الدالة العضو allocate للفئة ara::core::MemoryResource لتخصيص ذاكرة خطية بحجم بايت ومحاذاة محددين مسبقاً [SWS_CORE_06503]. وهي تستند إلى واجهة C++ القياسية [mem.res]، ولكنها تختلف بشكل جوهري في معالجة الاستثناءات [SWS_CORE_06503].
الاستخدام والمعلمات
يتم الاستدعاء بشكل متزامن عبر المعلمتين bytes (عدد البايتات المطلوب حجزها) وalignment الاختيارية، والمضبوطة افتراضياً على alignof(std::max_align_t)[SWS_CORE_06503]. وتم تزويد القيمة المعادة بالسمة [[nodiscard]]، ولهذا السبب يجب تقييم المؤشر المُرجع من النوع void* إلزامياً في المستدعي [SWS_CORE_06503].
معالجة الأخطاء والأمان من الاستثناءات
على النقيض من السلوك القياسي، لا تطرح الدالة في حالة الخطأ أي استثناء من النوع std::bad_alloc، بل تم التصريح عنها بـ noexcept وتعتبر آمنة للاستثناءات (exception safe) [SWS_CORE_06503]:
النجاح: تُرجع مؤشراً صالحاً إلى نطاق الذاكرة المخصص وفقاً لـ [mem.res][SWS_CORE_06503].
الفشل: إذا فشل تخصيص الذاكرة، تُرجع الدالة nullptr بدلاً من ذلك [SWS_CORE_06503]. وبالتالي يجب على المستدعي دائماً فحص النتيجة صراحةً للتحقق من المؤشر الصفري.
التزامن والتفاعل
تم تحديد الدالة على أنها غير آمنة بالنسبة للخيوط (not thread-safe) [SWS_CORE_06503]. وبناءً على ذلك، تتطلب الاستدعاءات المتوازية على النسخة نفسها من MemoryResource مزامنة خارجية من قبل المستدعي. يتواجد هذا النمط المتسامح مع الأخطاء والخالي من الاستثناءات بشكل متسق في مكونات ذاكرة أخرى لـ AUTOSAR Adaptive: إذ يستخدم ara::core::PolymorphicAllocator::allocate النهج نفسه بدون استثناءات [SWS_CORE_06547]، وتُشير النسخة الخاصة NullMemoryResource أيضاً إلى نفاد الذاكرة من خلال إرجاع nullptr[SWS_CORE_06563].
تم إنشاء ملاحظة الاستخدام هذه بصورة آلية استنادًا إلى مواصفة AUTOSAR R25-11.
As per corresponding usage in [mem.res] except for the following deviations: 1. The function is noexcept 2. If unsuccessful: errors will be silently ignored
مُولَّد بالذكاء الاصطناعيغير مُراجَعالنموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: 65d739156bbeالمصدر
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني
تُستخدم الدالة deallocate للفئة ara::core::MemoryResource لتحرير نطاقات الذاكرة وفقاً لـ [SWS_CORE_06504]. ويتبع الاستخدام أساساً السلوك القياسي من [mem.res]، ولكنه يُظهر انحرافات محددة. ويتم الاستدعاء بشكل متزامن عبر التوقيع void deallocate(void *p, std::size_t bytes, std::size_t alignment=max_align) noexcept، حيث يتم تمرير المؤشر p إلى الكتلة المراد تحريرها والحجم bytes بالإضافة إلى المحاذاة اختيارياً [SWS_CORE_06504].
فيما يتعلق بسلوك الأخطاء، تم تحديد الدالة بـ noexcept وكآمنة للاستثناءات (exception safe) [SWS_CORE_06504]. وإذا فشل التحرير، يتم تجاهل الأخطاء بصمت (errors will be silently ignored) [SWS_CORE_06504]. ولا يتم طرح أي استثناءات ولا إصدار أي رسائل خطأ عبر DET أو DEM.
فيما يتعلق بالتزامن، تم تصنيف الدالة صراحةً بأنها غير آمنة بالنسبة للخيوط (not thread-safe) [SWS_CORE_06504]. ولذلك يجب مزامنة عمليات الوصول المتزامنة إلى نسخة المورد نفسها خارجياً من قبل المستدعي.
في إطار التفاعل مع مفهوم المخصِّص، تتوافق هذه الدالة مع الواجهة محددة النوع deallocate للفئة ara::core::PolymorphicAllocator من [SWS_CORE_06548]، والتي تُظهر انحرافات مماثلة فيما يتعلق بـ noexcept ومعالجة الأخطاء بصمت.
تم إنشاء إشعار الاستخدام هذا تلقائياً بواسطة مساعد إشراف ذكاء اصطناعي ويستند حصرياً إلى بيانات المواصفة لـ AUTOSAR R25-11.
As per corresponding usage in [mem.res] in [15] except for the following deviations: 1. The function is noexcept 2. The function returns nullptr instead of (potentially) throwing a std::bad_alloc exception
Literaturverzeichnis SWS Core: [15] ISO/IEC 14882:2020, Programming languages – C++ – www.iso.org
مُولَّد بالذكاء الاصطناعيغير مُراجَعالنموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: fa83e476b05dالمصدرأسئلة مفتوحة (1)
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني
تُستخدم الطريقة الافتراضية الصرفة do_allocate للفئة ara::core::MemoryResource لتخصيص كتل الذاكرة بحجم بايتات ومحاذاة محددين مسبقاً [SWS_CORE_06566]. وتستقبل كمعاملات عدد البايتات (bytes) وكذلك المحاذاة المطلوبة (alignment). عند نجاح التخصيص، تُعيد بشكل متزامن مؤشراً من النوع void * إلى نطاق الذاكرة المحجوز [SWS_CORE_06566].
فيما يتعلق بمعالجة الأخطاء، تنحرف الدالة عن قصد عن معيار C++ الاعتيادي: فهي مُعلنة كـ noexcept ولا تطلق استثناء std::bad_alloc عند الفشل، بل تُعيد nullptr بدلاً من ذلك [SWS_CORE_06566]. لذلك يجب على المستدعين دائماً فحص نتيجة التخصيص بحثاً عن مؤشر فارغ.
فيما يتعلق بالتزامن، تم تحديد الطريقة كـ not thread-safe[SWS_CORE_06566]. تتطلب الاستدعاءات المتوازية عبر المثيل نفسه مزامنة خارجية، ما لم ينص التنفيذ المشتق على حماية خاصة به. ونظراً للرؤية الخاصة، فمن المرجح أن يتم الاستدعاء من قِبل المستخدمين عادةً بشكل غير مباشر عبر الواجهة العليا للفئة الأساسية. سؤال Q-5cbdabf121ed4550 (مفتوح)
في إطار إدارة الذاكرة، تُشكل الطريقة النظير المباشر لـ do_deallocate، المسؤولة عن تحرير الذاكرة المخصصة وتتجاهل الأخطاء بصمت [SWS_CORE_06567]. علاوة على ذلك، تتحقق دالة المقارنة do_is_equal مما إذا كان مثيلا موردين متوافقين مع بعضهما البعض فيما يتعلق بالتخصيص والتحرير [SWS_CORE_06568].
تم توليد ملاحظة الاستخدام هذه تلقائياً بناءً على المواصفة.
As per corresponding usage in [mem.res] except for the following deviations: 1. The function is noexcept 2. If unsuccessful: errors will be silently ignored
مُولَّد بالذكاء الاصطناعيغير مُراجَعالنموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: fca1a9bccecbالمصدرأسئلة مفتوحة (1)
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني
تُستخدم الدالة العضو الافتراضية الصرفة do_deallocate للفئة ara::core::MemoryResource (المُعلنة في ara/core/memory_resource.h) وفقًا لـ [SWS_CORE_06567] لتحرير الذاكرة المحجوزة مسبقًا. وهي تستقبل المؤشر p إلى نطاق الذاكرة بالإضافة إلى حجمه bytes ومحاذاته المطلوبة alignment. وتتوافق دلالاتها مبدئيًا مع معيار C++ [mem.res]، غير أنها تُظهر انحرافين رئيسيين خاصين بالمنصة التكيفية (Adaptive) [SWS_CORE_06567].
أولاً، تم الإعلان عن الدالة كـ noexcept وهي تضمن الأمان من الاستثناءات (exception safe) [SWS_CORE_06567]. ثانيًا، يتم تجاهل أي أخطاء تحدث أثناء التحرير بصمت، بحيث لا يجوز للعمليات الفاشلة إطلاق رسائل خطأ ولا مقاطعة تدفق البرنامج [SWS_CORE_06567].
فيما يتعلق بالتزامن، تم تحديد do_deallocate على أنها not thread-safe وتتمتع برؤية private[SWS_CORE_06567]. وتفصيلًا للتنفيذ لمورد ذاكرة متعدد الأشكال، يُفترض أن تُنفّذ بشكل متزامن عبر واجهة الاستدعاء العامة ذات المستوى الأعلى. سؤال Q-3f97e122ee7fb281 (مفتوح) ويجب على الفئات المشتقة مزامنة عمليات التحرير المتزامنة على المورد نفسه بشكل مستقل عند الحاجة.
في الوحدة core، تشكل الدالة النظير لعملية التخصيص do_allocate[SWS_CORE_06566]، والتي تُرجع nullptr بدلاً من استثناء في حالة حدوث خطأ. وتتم المقارنة مع الموارد الأخرى عبر الدالة do_is_equal[SWS_CORE_06568]، والتي على النقيض من إلغاء التخصيص، تم تعريفها صراحة كـ thread-safe.
تم إنشاء ملاحظة الاستخدام هذه تلقائيًا استنادًا إلى مواصفات AUTOSAR R25-11.
مُولَّد بالذكاء الاصطناعيغير مُراجَعالنموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: c0f1ba532a98المصدرأسئلة مفتوحة (1)
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني
تُعلن الدالة العضو الافتراضية الصرفة do_is_equal في ملف الترويسة #include "ara/core/memory_resource.h" ضمن نطاق الأسماء الخاص بـ ara::core::MemoryResource ([SWS_CORE_06568]). وتُستخدم وفقًا لمواصفات C++ [mem.res] للمقارنة المتزامنة لمورد الذاكرة الحالي مع مرجع ممرر const MemoryResource &other للتحقق من التطابق ([SWS_CORE_06568]). ونظرًا لأن الدالة معرّفة برؤية خاصة (private)، فيُفترض معالجة استدعائها كتفصيل تنفيذ متعدد الأشكال عبر الواجهة العامة للفئة ara::core::MemoryResource ([SWS_CORE_06568]). سؤال Q-cbe02f652b43d6ec (مفتوح)
من حيث التنفيذ والأمان من الأخطاء، أُعلنت do_is_equal على أنها exception safe وكذلك noexcept ([SWS_CORE_06568]). وبالتالي، لا يجوز لها تحت أي ظرف من الظروف إطلاق استثناءات، وتشير إلى النتيجة مباشرة عبر القيمة المرجعة المنطقية ([SWS_CORE_06568]). بالإضافة إلى ذلك، تم تحديد الدالة على أنها thread-safe، بحيث يجب على التنفيذات المشتقة ضمان الأمان الترابطي حتى في حالات المقارنات المتزامنة ([SWS_CORE_06568]).
بالتكامل مع الدوال الافتراضية الأخرى لإدارة الذاكرة، تُكمل do_is_equal ثلاثي نقاط التخصيص لفئات الموارد المشتقة ([SWS_CORE_06568]). وبينما يُرجع تخصيص الذاكرة do_allocate القيمة nullptr في حالة حدوث خطأ ([SWS_CORE_06566]) ويتجاهل do_deallocate الأخطاء بصمت ([SWS_CORE_06567])، تم تحديد كلتا الدالتين على أنهما غير آمنتين ترابطيًا (not thread-safe) على عكس do_is_equal ([SWS_CORE_06566]، [SWS_CORE_06567]). وهذا يؤكد المتطلب الخاص المفروض على do_is_equal لتأمين مقارنات الموارد المتزامنة ([SWS_CORE_06568]).
تم إنشاء هذا النص بواسطة ذكاء اصطناعي ويُستخدم كملاحظة استخدام استنادًا إلى مواصفات AUTOSAR.
gemini-3.8-flash-low· 2026-10-13 · الأصل الألماني