Verwaltet Speicherblöcke in einem monoton wachsenden Puffer mit ausnahmefreier Allokation und gebündelter Freigabe.
KI-GENERIERTungeprüftModell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 993d3b66f0fcHerkunftOffene Fragen (2)
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Verwaltet Speicherblöcke in einem monoton wachsenden Puffer mit ausnahmefreier Allokation und gebündelter Freigabe.
Die Klasse ara::core::MonotonicBufferResource stellt eine spezialisierte Speicherressource für schnelle, monotone Allokationen aus einem festen Speicherpuffer oder über eine Upstream-Ressource bereit. Angeforderter Speicher wird schrittweise vergeben und bei einzelnen Deallokationen nicht sofort freigegeben, sondern erst gesammelt über release() ([SWS_CORE_06530]) zurückgesetzt. Alle Operationen sind vollständig ausnahmefrei deklariert, wobei ein Speichermangel durch die Rückgabe von nullptr anstelle einer Ausnahme signalisiert wird ([SWS_CORE_06569]). Die Instanzen sind nicht kopierbar und erfordern bei parallelem Zugriff aus mehreren Threads externe Synchronisation.
Kontext
Die Klasse ara::core::MonotonicBufferResource ist eine konkrete Speicherressource innerhalb des Moduls core der AUTOSAR-Adaptive-Plattform und erbt von der Basisklasse ara::core::MemoryResource. Sie adaptiert das aus dem C++-Standard bekannte Konzept von std::pmr::monotonic_buffer_resource aus [mem.res.monotonic.buffer] für sicherheitsrelevante und deterministische Fahrzeuganwendungen. Die primäre Rolle der Klasse besteht darin, Allokationsanfragen mit minimalem Verwaltungsaufwand aus einem kontinuierlichen Speicherbereich zu bedienen, indem Speicher monoton vergeben wird.
Als Interaktionspartner fungieren einerseits aufrufende Komponenten, polymorphe Allokatoren und Container, die Speicherblöcke zur Laufzeit anfordern. Andererseits interagiert die Klasse mit einer optionalen übergeordneten Upstream-Speicherressource (MemoryResource). Diese Upstream-Ressource kann über Konstruktoren wie [SWS_CORE_06521] übergeben und über die Zugriffsmethode upstream_resource() ([SWS_CORE_06531]) abgefragt werden.
Lebenszyklus
Die Initialisierung von ara::core::MonotonicBufferResource lässt sich über mehrere Konstruktoren steuern. Neben einem parameterlosen Standardkonstruktor ([SWS_CORE_06524]) stehen Überladungen zur Verfügung, die eine explizite Upstream-Ressource entgegennehmen ([SWS_CORE_06521]), eine anfängliche Puffergröße definieren ([SWS_CORE_06525], [SWS_CORE_06522]) oder einen extern bereitgestellten Rohspeicherbereich (void* buffer, std::size_t buffer_size) als initialen Puffer nutzen ([SWS_CORE_06526], [SWS_CORE_06523]).
In Bezug auf die Besitzverhältnisse ist die Klasse als strikt unkopierbar definiert: Der Kopierkonstruktor ([SWS_CORE_06527]) und der Kopierzuweisungsoperator ([SWS_CORE_06529]) sind gelöscht (=delete). Im Gegensatz zum ISO-14882-Standard implementiert die AUTOSAR-Klasse jedoch explizite Verschiebesemantik über den Move-Konstruktor ([SWS_CORE_06576]) und den Move-Zuweisungsoperator ([SWS_CORE_06577]), die jeweils als noexcept=default definiert sind.
Die Zerstörung erfolgt über den Destruktor ~MonotonicBufferResource() ([SWS_CORE_06528]). Eine wesentliche AUTOSAR-Abweichung zum Standard liegt darin, dass der Destruktor nicht als virtuell deklariert ist. Über die Methode release() ([SWS_CORE_06530]) kann der gesamte allokierte Speicher vor Ablauf der Objektlebensdauer zurückgesetzt werden.
Ein typischer Anwendungsablauf umfasst die Bereitstellung, fortlaufende Allokation und die gebündelte Freigabe:
Instanziierung: Die Anwendung erzeugt eine Instanz, beispielsweise unter Vorgabe einer Puffergröße und einer Upstream-Ressource ([SWS_CORE_06522]) oder eines festen Puffers ([SWS_CORE_06526]).
Allokation: Speicheranforderungen werden über die geschützte Methode do_allocate(bytes, alignment) ([SWS_CORE_06569]) bedient. Reicht der vorhandene Puffer nicht aus, bezieht die Instanz neuen Puffer von der Upstream-Ressource.
Deallokation: Aufrufe von do_deallocate(p, bytes, alignment) ([SWS_CORE_06570]) verkleinern den Puffer nicht individuell; der interne Allokationszeiger wandert monoton weiter.
Puffer-Reset: Mit release() ([SWS_CORE_06530]) werden alle über Upstream bezogenen Speicherblöcke auf einmal freigegeben, und der Puffer steht für neue Zyklen bereit.
Ressourcenvergleich: Über do_is_equal() ([SWS_CORE_06571]) kann geprüft werden, ob zwei Speicherressourcen identisch sind.
Die Klasse folgt strikten Vorgaben für ausnahmefreie eingebettete Systeme: Sämtliche Elementfunktionen, Konstruktoren und Operatoren sind als noexcept deklariert und bieten vollständige Ausnahmesicherheit.
Im Fehlerfall weicht das Verhalten bewusst von der Standardbibliothek ab:
Fehlgeschlagene Allokation: Wenn eine Anforderung in do_allocate() ([SWS_CORE_06569]) nicht bedient werden kann, wird keine Ausnahme std::bad_alloc geworfen, sondern ein nullptr zurückgegeben. Aufrufer müssen den Rückgabewert zwingend auf nullptr prüfen.
Fehler bei der Deallokation: Sollte bei der Freigabe in do_deallocate() ([SWS_CORE_06570]) ein Fehler auftreten, wird dieser laut Spezifikation stillschweigend ignoriert.
Zerstörung über Basiszeiger: Da der Destruktor ([SWS_CORE_06528]) nicht virtuell ist, dürfte eine Zerstörung über einen Zeiger auf die Basisklasse MemoryResource zu undefiniertem Verhalten führen (Interpretation: Die Zerstörung muss über den konkreten Typ erfolgen). Frage Q-add18020b48f3131 (offen)
Dieser Leitfaden wurde durch ein KI-System auf Basis der Spezifikation AUTOSAR Adaptive R25-11 generiert.
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
KI-GENERIERTungeprüftModell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 601be17f5d68HerkunftOffene Fragen (1)
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Verwendung
Die geschützte Elementfunktion do_allocate der Klasse ara::core::MonotonicBufferResource dient der Allokation von Speicherbereichen gemäß [mem.res.monotonic.buffer][SWS_CORE_06569]. Sie implementiert die rein virtuelle Schnittstelle do_allocate der Basisklasse ara::core::MemoryResource[SWS_CORE_06566]. Als Interpretation dürfte der synchrone Aufruf aufgrund der protected-Sichtbarkeit primär indirekt über die öffentlichen Zuweisungsmethoden der Basisklasse erfolgen. Frage Q-21b2da19c0fd7f8f (offen) Die Funktion nimmt die angeforderte Größe in Bytes sowie die gewünschte Ausrichtung (alignment) entgegen.
Fehlerbehandlung und Ausnahmesicherheit
Im Gegensatz zum C++-Standardverhalten wirft die Funktion bei Allokationsfehlern keine std::bad_alloc-Ausnahme, sondern liefert stattdessen einen nullptr zurück [SWS_CORE_06569]. Durch die Deklaration mit noexcept ist die Methode ausnahmesicher spezifiziert [SWS_CORE_06569]. Aufrufer müssen daher das Ergebnis stets auf nullptr überprüfen, um unzureichenden Speicher zu erkennen.
Nebenläufigkeit und Zusammenspiel
Die Methode ist als nicht threadsicher spezifiziert [SWS_CORE_06569]. Werden Zuweisungen nebenläufig aus mehreren Threads angestoßen, muss die Synchronisation extern über die aufrufende Stelle erfolgen. Dies entspricht dem Verhalten von ara::core::UnsynchronizedPoolResource::do_allocate[SWS_CORE_00058], während ara::core::SynchronizedPoolResource::do_allocate für nebenläufige Aufrufe threadsicher ausgelegt ist [SWS_CORE_00061].
Dieser Nutzungshinweis wurde automatisiert anhand der Spezifikation AUTOSAR R25-11 generiert.
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
KI-GENERIERTungeprüftModell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: e7d49ed79e7cHerkunftOffene Fragen (1)
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Verwendung
Die Elementfunktion do_deallocate der Klasse ara::core::MonotonicBufferResource dient der Deallokation von Speicherbereichen gemäß [SWS_CORE_06570]. Sie ist über die Header-Datei #include "ara/core/memory_resource.h" definiert [SWS_CORE_06570]. Die Funktion nimmt einen Zeiger p auf den freizugebenden Speicherbereich sowie die Parameter bytes und alignment (jeweils vom Typ std::size_t) entgegen und liefert keinen Rückgabewert (void) [SWS_CORE_06570]. Die Semantik folgt der Festlegung in [mem.res.monotonic.buffer] mit spezifischen AUTOSAR-Abweichungen [SWS_CORE_06570].
Fehlerbehandlung
Die Funktion ist als noexcept deklariert und gewährleistet Ausnahme-Sicherheit (exception safe) [SWS_CORE_06570]. Tritt bei der Durchführung ein Fehler auf, wird dieser stillschweigend ignoriert (errors will be silently ignored) [SWS_CORE_06570]. Es existieren weder Rückgabewerte noch spezifische Fehlercodes für Fehlermeldungen.
Nebenläufigkeit und Einschränkungen
Hinsichtlich der Nebenläufigkeit ist do_deallocate als nicht threadsicher (not thread-safe) spezifiziert [SWS_CORE_06570]. Ein gleichzeitiger Aufruf aus mehreren Threads ohne externe Synchronisation ist nicht zulässig. Die Methode besitzt die Sichtbarkeit protected und überschreibt die rein virtuelle Schnittstelle der Basisklasse ara::core::MemoryResource[SWS_CORE_06567]. Interpretation: Aufrufe dürften regulär über die öffentliche Deallokationsschnittstelle der Basisklasse abgewickelt werden. Frage Q-6916292acaa8993b (offen)
Zusammenspiel
Während die Basisklasse ara::core::MemoryResource die Deallokationsmethode mit privater Sichtbarkeit vorschreibt [SWS_CORE_06567], implementieren MonotonicBufferResource sowie die verwandten Klassen ara::core::SynchronizedPoolResource[SWS_CORE_00041] und ara::core::UnsynchronizedPoolResource[SWS_CORE_00059] diese geschützt (protected) unter stummer Fehlerbehandlung. Im Gegensatz zur synchronisierten Pool-Ressource [SWS_CORE_00041], welche threadsicher ist, erfordert MonotonicBufferResource wie ara::core::UnsynchronizedPoolResource[SWS_CORE_00059] den Ausschluss paralleler Zugriffe.
Dieser Nutzungshinweis wurde von einer KI erstellt und basiert auf den Festlegungen der Spezifikation AUTOSAR Adaptive R25-11.
As per corresponding usage in [mem.res.monotonic.buffer] except for the following deviations: 1. The function is noexcept
KI-GENERIERTungeprüftModell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: fc4ade44f9c3Herkunft
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Die protected-Methode do_is_equal der Klasse ara::core::MonotonicBufferResource überschreibt die rein virtuelle Schnittstelle der Basisklasse ara::core::MemoryResource gemäß [SWS_CORE_06571]. Sie vergleicht die aktuelle Instanz synchron mit einer übergebenen const MemoryResource &other auf Gleichheit bezüglich der Speicherverwaltungssemantik.
Verwendung und Semantik
Der Aufruf erfolgt typischerweise indirekt über die öffentliche Schnittstelle von MemoryResource. Gemäß [SWS_CORE_06571] richtet sich das Verhalten nach der Verwendung in [mem.res.monotonic.buffer], weist jedoch die explizite Abweichung auf, dass die Funktion als noexcept deklariert ist. Der Rückgabewert ist ein bool, der angibt, ob die beiden Ressourcen austauschbar bzw. identisch sind.
Fehlerbehandlung und Nebenläufigkeit
Exception-Sicherheit: Die Funktion ist als exception safe spezifiziert und wirft aufgrund der noexcept-Signatur gemäß [SWS_CORE_06571] keine Ausnahmen. Spezifische Fehlercodes oder DET-/DEM-Meldungen existieren nicht.
Thread-Sicherheit: Die Operation ist als thread-safe klassifiziert ([SWS_CORE_06571]) und kann nebenläufig ausgeführt werden.
Zusammenspiel
Die Funktion implementiert den virtuellen Vertrag aus ara::core::MemoryResource ([SWS_CORE_06568]). Ähnliche Implementierungen des Gleichheitsvergleichs finden sich auch in anderen Speicherressourcen wie ara::core::SynchronizedPoolResource ([SWS_CORE_00042]) und ara::core::UnsynchronizedPoolResource ([SWS_CORE_00060]).
Dieser Text wurde von einer KI auf Basis der Spezifikation R25-11 generiert.
As per corresponding usage in [mem.res.monotonic.buffer] except for the following deviations: 1. The function is noexcept
KI-GENERIERTungeprüftModell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 082c843665ceHerkunftOffene Fragen (1)
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Die Elementfunktion release() der Klasse ara::core::MonotonicBufferResource ([SWS_CORE_06530]) dient der Freigabe des durch die Pufferressource verwalteten Speichers. Der Aufruf erfolgt synchron, nimmt keine Parameter entgegen und liefert keinen Rückgabewert (void).
Hinsichtlich der Fehlerbehandlung ist die Funktion als noexcept deklariert und als ausnahmesicher (exception safe) spezifiziert ([SWS_CORE_06530]). Spezifische Fehlercodes existieren nicht, und es werden keine Fehlermeldungen an zentrale Diagnose- oder Meldeinstanzen abgesetzt.
Bezüglich der Nebenläufigkeit ist release() explizit als nicht threadsicher (not thread-safe) eingestuft ([SWS_CORE_06530]). Ein konkurrierender Zugriff auf dieselbe Instanz ohne externe Synchronisation ist unzulässig. Interpretation: Durch die angelehnte Semantik aus [mem.res.monotonic.buffer] dürften mit dem Aufruf sämtliche zuvor über diese Ressource bereitgestellten Speicherbereiche ungültig werden. Frage Q-bd46bd9971926d95 (offen)
Im Zusammenspiel der Speicherressourcen aus #include "ara/core/memory_resource.h" unterscheidet sich die Funktion im Nebenläufigkeitsverhalten von ara::core::SynchronizedPoolResource::release(), welche threadsicher ist ([SWS_CORE_00037]), während sie sich analog zu ara::core::UnsynchronizedPoolResource::release() verhält, die ebenfalls nicht threadsicher ist ([SWS_CORE_00065]).
Dieser Text wurde von einer KI auf Basis der Spezifikationsanforderungen von AUTOSAR R25-11 generiert.
As per corresponding usage in [mem.res.monotonic.buffer] except for the following deviations: 1. The function is noexcept
KI-GENERIERTungeprüftModell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 34a11a1fee7aHerkunftOffene Fragen (1)
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Die Elementfunktion upstream_resource() der Klasse ara::core::MonotonicBufferResource gibt synchron einen Zeiger auf die übergeordnete Speicherressource vom Typ MemoryResource* zurück [SWS_CORE_06531]. Der Aufruf erfolgt über den Header #include "ara/core/memory_resource.h" und nimmt keine Parameter entgegen [SWS_CORE_06531]. Interpretation: Die zurückgegebene Speicherressource dürfte als übergeordneter Puffer fungieren, falls der interne Puffer der Instanz für Allokationen nicht ausreicht. Frage Q-e01e234e281bc4c6 (offen)
Hinsichtlich der Fehlerbehandlung und Exception-Sicherheit ist die Methode als noexcept deklariert und vollständig ausnahmesicher (exception safe) [SWS_CORE_06531]. Spezifische Fehlercodes, Fehlerobjekte oder Diagnosemeldungen wie DET oder DEM sind für diesen reinen Getter-Aufruf in der Spezifikation nicht vorgesehen [SWS_CORE_06531].
Bezüglich der Nebenläufigkeit ist die Methode als const sowie thread-sicher (thread-safe) spezifiziert [SWS_CORE_06531]. Dadurch kann der Zeiger auf die Upstream-Ressource aus mehreren Threads parallel ohne externe Synchronisation abgefragt werden.
Die funktionale Semantik folgt der Festlegung in [mem.res.monotonic.buffer], weist jedoch die normative Abweichung auf, dass die Funktion im AUTOSAR-Adaptive-Standard explizit als noexcept definiert ist [SWS_CORE_06531]. Ein analoges Schnittstellenmuster zur Bereitstellung der übergeordneten Ressource nutzen auch die verwandten Klassen ara::core::SynchronizedPoolResource[SWS_CORE_00038] sowie ara::core::UnsynchronizedPoolResource[SWS_CORE_00056].
Dieser Text wurde von einer KI auf Basis der Spezifikationsdaten erstellt.
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-medium· 2026-10-13