Dient als Basisschnittstelle für ausnahmenfreie Speicherallokation und -freigabe.
KI-GENERIERTungeprüftModell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: efd95fd8a941HerkunftOffene Fragen (2)
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Dient als Basisschnittstelle für ausnahmenfreie Speicherallokation und -freigabe.
Die Klasse stellt eine abstrakte Basisschnittstelle für polymorphe Speicherressourcen bereit, die der C++-Standardschnittstelle nachempfunden ist. Über das Non-Virtual-Interface-Muster delegiert sie Allokations- und Freigabeanfragen an abgeleitete Ressourcenklassen weiter [SWS_CORE_06503]. Im Gegensatz zum C++-Standard sind sämtliche Schnittstellenfunktionen ausnahmesicher deklariert, weshalb Speicherfehler nicht per Ausnahme, sondern durch die Rückgabe eines Nullzeigers signalisiert werden [SWS_CORE_06566]. Zudem sind Allokations- und Freigabevorgänge standardmäßig nicht threadsicher ausgelegt.
Kontext
Die Klasse ara::core::MemoryResource stellt in der AUTOSAR Adaptive Platform (Modul core) eine abstrakte Basisschnittstelle für die Speicherverwaltung bereit, die an den C++-Standardtyp std::pmr::memory_resource angelehnt ist. Sie dient als gemeinsames Fundament für austauschbare Allokationsstrategien und entkoppelt aufrufende Datenstrukturen von den konkreten Mechanismen der Speicherbereitstellung. Als wesentlicher Unterschied zum ISO-C++-Standard verzichtet die AUTOSAR-Spezifikation vollständig auf dynamische Ausnahmen und formuliert für sämtliche Operationen strikte noexcept-Garantien [SWS_CORE_06501].
Die Architektur folgt dem Non-Virtual-Interface-Muster (NVI): Öffentliche, nicht-virtuelle Elementfunktionen definieren die feste Schnittstelle für Aufrufer, während das eigentliche Verhalten in abgeleiteten Klassen über private, rein virtuelle Elementfunktionen implementiert werden muss. Interpretation: Konkrete Speicherressourcen leiten von ara::core::MemoryResource ab und überschreiben die privaten Basisschnittstellen do_allocate[SWS_CORE_06566], do_deallocate[SWS_CORE_06567] sowie do_is_equal[SWS_CORE_06568], um anwendungsspezifische Puffer- oder Pool-Verwaltungen bereitzustellen. Frage Q-d09d47b0a8f6b822 (offen)
Lebenszyklus
Die Instanziierung von Spezialisierungen erfolgt über den parameterlosen Standardkonstruktor, der als noexcept=default spezifiziert ist [SWS_CORE_06501]. Ebenso stehen ein noexcept-Kopierkonstruktor [SWS_CORE_06502] und ein noexcept-Kopierzuweisungsoperator [SWS_CORE_06507] bereit. Ergänzend zum C++-Standard definiert AUTOSAR explizit einen Move-Konstruktor [SWS_CORE_06574] und einen Move-Zuweisungsoperator [SWS_CORE_06575], die beide als noexcept=default festgelegt sind.
Der Lebenszyklus polymorpher Instanzen wird durch einen virtuellen Destruktor abgesichert, der als ausnahmesicher deklariert ist [SWS_CORE_06506]. Bezüglich der Nebenläufigkeit ist zu beachten, dass sowohl der Destruktor als auch die Allokations- und Freigabefunktionen allocate[SWS_CORE_06503] und deallocate[SWS_CORE_06504] als nicht threadsicher spezifiziert sind. Interpretation: Für thread-sichere Allokationen und Freigaben dürften übergeordnete Synchronisationsmechanismen oder spezialisierte Unterklassen zuständig sein, da die Basismethoden als nicht thread-sicher spezifiziert sind. Frage Q-adac4b6cf6e0db7c (offen) Die Gleichheitsprüfung via is_equal ist hingegen explizit threadsicher ausgelegt [SWS_CORE_06505].
Nutzungspfad
Der primäre Ablauf bei der Speicherverwaltung besteht aus der Anforderung, der optionalen Identitätsprüfung und der anschließenden Freigabe von Speicherblöcken über die öffentliche NVI-Schnittstelle:
Speicherallokation: Der Aufrufer ruft allocate unter Angabe der Bytegröße und der optionalen Ausrichtung auf [SWS_CORE_06503]. Die Methode delegiert intern an die private rein virtuelle Funktion do_allocate der konkreten Klasse [SWS_CORE_06566].
Gleichheitsprüfung: Um festzustellen, ob zwei Speicherressourcen zueinander äquivalent sind und Speicher der einen durch die andere freigegeben werden kann, ruft der Nutzer is_equal auf [SWS_CORE_06505], was an do_is_equal delegiert [SWS_CORE_06568].
Speicherfreigabe: Nach Abschluss der Nutzung wird der Block über deallocate unter Angabe des Zeigers, der Bytegröße und des Alignments zurückgegeben [SWS_CORE_06504], wodurch die interne Weiterleitung an do_deallocate erfolgt [SWS_CORE_06567].
Ein zentrales Merkmal der Klasse ist die vollständige Verbannung von Ausnahmen. Während der ISO-C++-Standard im Erschöpfungsfall eine Ausnahme vom Typ std::bad_alloc vorsieht, weicht AUTOSAR hiervon gezielt ab: Schlägt eine Allokation in allocate bzw. do_allocate fehl, liefert die Funktion zwingend nullptr zurück [SWS_CORE_06503], [SWS_CORE_06566]. Durch das Attribut [[nodiscard]] an allocate wird der Aufrufer angehalten, den Rückgabewert stets entgegenzunehmen und vor dem Zugriff auf Gültigkeit zu prüfen.
Für die Freigabeoperationen deallocate und do_deallocate gilt, dass etwaige Fehler bei der Rückgabe des Speichers stillschweigend ignoriert werden [SWS_CORE_06504], [SWS_CORE_06567]. Es werden weder Ausnahmen geworfen noch Fehlercodes zurückgegeben, was die Einhaltung harter Echtzeit- und Sicherheitsanforderungen im adaptiven Plattformkontext erleichtert.
Dieser Text wurde von einer KI kuratiert und basiert ausschließlich auf den Spezifikationen der 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
KI-GENERIERTungeprüftModell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 6735dc6d085fHerkunft
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Die Elementfunktion allocate der Klasse ara::core::MemoryResource dient der Allokation von linearem Speicher mit vorgegebener Bytegröße und Ausrichtung [SWS_CORE_06503]. Sie orientiert sich an der C++-Standardschnittstelle [mem.res], weicht jedoch in der Ausnahmebehandlung maßgeblich ab [SWS_CORE_06503].
Verwendung und Parameter
Der Aufruf erfolgt synchron über die Parameter bytes (Anzahl der anzufordernden Bytes) und das optionale alignment, welches standardmäßig auf alignof(std::max_align_t) gesetzt ist [SWS_CORE_06503]. Der Rückgabewert ist mit dem Attribut [[nodiscard]] versehen, weshalb der gelieferte Zeiger vom Typ void* im Aufrufer zwingend ausgewertet werden muss [SWS_CORE_06503].
Fehlerbehandlung und Exception-Sicherheit
Im Gegensatz zum Standardverhalten wirft die Funktion im Fehlerfall keine Ausnahme des Typs std::bad_alloc, sondern ist als noexcept deklariert und gilt als ausnahmesicher (exception safe) [SWS_CORE_06503]:
Erfolg: Liefert einen gültigen Zeiger auf den allokierten Speicherbereich gemäß [mem.res][SWS_CORE_06503].
Fehlschlag: Schlägt die Speicherzuweisung fehl, gibt die Funktion stattdessen nullptr zurück [SWS_CORE_06503]. Der Aufrufer muss das Ergebnis daher stets explizit auf einen Nullzeiger prüfen.
Nebenläufigkeit und Zusammenspiel
Die Funktion ist als nicht threadsicher (not thread-safe) spezifiziert [SWS_CORE_06503]. Parallele Aufrufe auf derselben Instanz von MemoryResource erfordern folglich eine externe Synchronisation durch den Aufrufer. Dieses fehlertolerante, ausnahmefreie Muster findet sich konsistent in weiteren Speicherkomponenten von AUTOSAR Adaptive: So nutzt ara::core::PolymorphicAllocator::allocate denselben Ansatz ohne Exceptions [SWS_CORE_06547], und auch die spezielle Instanz NullMemoryResource signalisiert Speichererschöpfung durch Rückgabe von nullptr[SWS_CORE_06563].
Dieser Verwendungshinweis wurde automatisiert auf Basis der AUTOSAR-Spezifikation R25-11 generiert.
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
KI-GENERIERTungeprüftModell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 65d739156bbeHerkunft
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Die Funktion deallocate der Klasse ara::core::MemoryResource dient der Freigabe von Speicherbereichen gemäß [SWS_CORE_06504]. Die Verwendung folgt grundsätzlich dem Standardverhalten aus [mem.res], weist jedoch spezifische Abweichungen auf. Der Aufruf erfolgt synchron über die Signatur void deallocate(void *p, std::size_t bytes, std::size_t alignment=max_align) noexcept, wobei der Zeiger p auf den freizugebenden Block, die Größe bytes sowie optional das Alignment übergeben werden [SWS_CORE_06504].
Hinsichtlich des Fehlerverhaltens ist die Funktion als noexcept und exceptionsicher (exception safe) spezifiziert [SWS_CORE_06504]. Schlägt die Freigabe fehl, werden Fehler stillschweigend ignoriert (errors will be silently ignored) [SWS_CORE_06504]. Es werden keine Exceptions geworfen und keine Fehlermeldungen über DET oder DEM ausgegeben.
Bezüglich der Nebenläufigkeit ist die Funktion ausdrücklich als nicht threadsicher (not thread-safe) eingestuft [SWS_CORE_06504]. Gleichzeitige Zugriffe auf dieselbe Ressourcen-Instanz müssen daher vom Aufrufer extern synchronisiert werden.
Im Zusammenspiel mit dem Allokatorkonzept korrespondiert diese Funktion mit der typisierten Schnittstelle deallocate der Klasse ara::core::PolymorphicAllocator aus [SWS_CORE_06548], welche ähnliche Abweichungen bezüglich noexcept und stillschweigender Fehlerbehandlung aufweist.
Dieser Nutzungshinweis wurde automatisch durch einen KI-Kurations-Assistenten erstellt und basiert ausschließlich auf den Spezifikationsdaten von 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
KI-GENERIERTungeprüftModell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: fa83e476b05dHerkunftOffene Fragen (1)
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Die rein virtuelle Methode do_allocate der Klasse ara::core::MemoryResource dient der Allokation von Speicherblöcken mit vorgegebener Bytegröße und Ausrichtung [SWS_CORE_06566]. Als Parameter übernimmt sie die Anzahl der Bytes (bytes) sowie das geforderte Alignment (alignment). Bei erfolgreicher Zuweisung liefert sie synchron einen Zeiger vom Typ void * auf den reservierten Speicherbereich zurück [SWS_CORE_06566].
In Bezug auf die Fehlerbehandlung weicht die Funktion gezielt vom regulären C++-Standard ab: Sie ist als noexcept deklariert und wirft bei Fehlschlägen keine std::bad_alloc-Ausnahme, sondern liefert stattdessen nullptr zurück [SWS_CORE_06566]. Aufrufer müssen das Allokationsergebnis daher stets auf einen Nullzeiger prüfen.
Hinsichtlich der Nebenläufigkeit ist die Methode als not thread-safe spezifiziert [SWS_CORE_06566]. Parallele Aufrufe über dieselbe Instanz bedürfen einer externen Synchronisation, sofern die abgeleitete Implementierung keinen eigenen Schutz vorsieht. Aufgrund der privaten Sichtbarkeit dürfte der Aufruf durch Nutzer typischerweise indirekt über die übergeordnete Schnittstelle der Basisklasse erfolgen. Frage Q-5cbdabf121ed4550 (offen)
Im Zusammenspiel der Speicherverwaltung bildet die Methode das direkte Gegenstück zu do_deallocate, welches für die Freigabe des allokierten Speichers zuständig ist und Fehler stillschweigend ignoriert [SWS_CORE_06567]. Die Vergleichsfunktion do_is_equal prüft darüber hinaus, ob zwei Ressourceninstanzen bezüglich Allokation und Freigabe zueinander kompatibel sind [SWS_CORE_06568].
Dieser Nutzungshinweis wurde automatisiert auf Basis der Spezifikation generiert.
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
KI-GENERIERTungeprüftModell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: fca1a9bccecbHerkunftOffene Fragen (1)
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Die rein virtuelle Elementfunktion do_deallocate der Klasse ara::core::MemoryResource (deklariert in ara/core/memory_resource.h) dient gemäß [SWS_CORE_06567] der Freigabe zuvor reservierten Speichers. Sie nimmt den Zeiger p auf den Speicherbereich sowie dessen Größe bytes und geforderte Ausrichtung alignment entgegen. Die Semantik entspricht grundsätzlich dem C++-Standard [mem.res], weist jedoch zwei maßgebliche adaptive-spezifische Abweichungen auf [SWS_CORE_06567].
Erstens ist die Funktion als noexcept deklariert und garantiert Ausnahme-Sicherheit (exception safe) [SWS_CORE_06567]. Zweitens werden etwaige Fehler während der Freigabe stillschweigend ignoriert, sodass fehlgeschlagene Operationen weder Fehlermeldungen auslösen noch den Programmfluss unterbrechen dürfen [SWS_CORE_06567].
Hinsichtlich der Nebenläufigkeit ist do_deallocate als not thread-safe spezifiziert und besitzt private Sichtbarkeit [SWS_CORE_06567]. Als Implementierungsdetail einer polymorphen Speicherressource dürfte sie synchron über die übergeordnete öffentliche Aufrufschnittstelle ausgeführt werden. Frage Q-3f97e122ee7fb281 (offen) Konkurrierende Freigaben auf derselben Ressource müssen von ableitenden Klassen bei Bedarf eigenständig synchronisiert werden.
Im Modul core bildet die Funktion das Gegenstück zur Allokation do_allocate[SWS_CORE_06566], welche im Fehlerfall nullptr anstelle einer Exception liefert. Der Vergleich mit anderen Ressourcen erfolgt über die Methode do_is_equal[SWS_CORE_06568], die im Gegensatz zur Deallokation explizit als thread-safe definiert ist.
Dieser Nutzungshinweis wurde automatisch auf Basis der Spezifikation von AUTOSAR R25-11 generiert.
KI-GENERIERTungeprüftModell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: c0f1ba532a98HerkunftOffene Fragen (1)
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Die rein virtuelle Elementfunktion do_is_equal wird im Header #include "ara/core/memory_resource.h" im Namensraum von ara::core::MemoryResource deklariert ([SWS_CORE_06568]). Sie dient gemäß der C++-Spezifikation [mem.res] dem synchronen Vergleich der aktuellen Speicherressource mit einer übergebenen Referenz const MemoryResource &other auf Gleichheit ([SWS_CORE_06568]). Da die Methode mit privater Sichtbarkeit (private) definiert ist, dürfte ihr Aufruf als Implementierungsdetail polymorph über die öffentliche Schnittstelle der Klasse ara::core::MemoryResource abgewickelt werden ([SWS_CORE_06568]). Frage Q-cbe02f652b43d6ec (offen)
Hinsichtlich Ausführung und Fehlersicherheit ist do_is_equal als exception safe sowie noexcept deklariert ([SWS_CORE_06568]). Sie darf demnach unter keinen Umständen Ausnahmen werfen und signalisiert das Ergebnis direkt über den booleschen Rückgabewert ([SWS_CORE_06568]). Zudem ist die Methode als thread-safe spezifiziert, sodass abgeleitete Implementierungen auch bei nebenläufigen Vergleichen Thread-Sicherheit gewährleisten müssen ([SWS_CORE_06568]).
Im Zusammenspiel mit den übrigen virtuellen Methoden der Speicherverwaltung komplettiert do_is_equal das Trio der Anpassungspunkte abgeleiteter Ressourcenklassen ([SWS_CORE_06568]). Während die Speicherzuweisung do_allocate im Fehlerfall nullptr liefert ([SWS_CORE_06566]) und do_deallocate Fehler stillschweigend ignoriert ([SWS_CORE_06567]), sind beide Funktionen im Gegensatz zu do_is_equal als nicht threadsicher (not thread-safe) ausgewiesen ([SWS_CORE_06566], [SWS_CORE_06567]). Dies unterstreicht die besondere Anforderung an do_is_equal, nebenläufige Ressourcenvergleiche abzusichern ([SWS_CORE_06568]).
Dieser Text wurde von einer KI generiert und dient als Verwendungshinweis auf Basis der AUTOSAR-Spezifikation.
gemini-3.8-flash-medium· 2026-10-13