Beheert geheugenblokken in een monotoon groeiende buffer met exceptievrije allocatie en gebundelde vrijgave.
DOOR AI GEGENEREERDongecontroleerdModel: gemini-3.8-flash-medium · Inspanning: medium · Temperatuur: niet regelbaar · Prompt: 993d3b66f0fcHerkomstOpen vragen (2)
vertaald uit de Duitse handleidinggemini-3.8-flash-low · 2026-10-13 · Duits origineel
Beheert geheugenblokken in een monotoon groeiende buffer met exceptievrije allocatie en gebundelde vrijgave.
De klasse ara::core::MonotonicBufferResource stelt een gespecialiseerde geheugenbron beschikbaar voor snelle, monotone allocaties vanuit een vaste geheugenbuffer of via een upstream-resource. Aangevraagd geheugen wordt stapsgewijs toegekend en bij afzonderlijke deallocaties niet direct vrijgegeven, maar pas verzameld via release() ([SWS_CORE_06530]) gereset. Alle operaties zijn volledig exceptievrij gedeclareerd, waarbij een geheugentekort wordt gesignaleerd door het retourneren van nullptr in plaats van een exceptie ([SWS_CORE_06569]). De instanties zijn niet kopieerbaar en vereisen externe synchronisatie bij parallelle toegang vanuit meerdere threads.
Context
De klasse ara::core::MonotonicBufferResource is een concrete geheugenbron binnen de module core van het AUTOSAR Adaptive Platform en erft van de basisklasse ara::core::MemoryResource. Zij adapteert het uit de C++-standaard bekende concept van std::pmr::monotonic_buffer_resource uit [mem.res.monotonic.buffer] voor veiligheidsrelevante en deterministische voertuigtoepassingen. De primaire rol van de klasse bestaat erin allocatieverzoeken met minimale beheeroverhead te bedienen vanuit een continu geheugengebied, door geheugen monotoon toe te kennen.
Als interactiepartners fungeren enerzijds aanroepende componenten, polymorfe allocators en containers die tijdens runtime geheugenblokken aanvragen. Anderzijds interageert de klasse met een optionele bovenliggende upstream-geheugenbron (MemoryResource). Deze upstream-bron kan via constructors zoals [SWS_CORE_06521] worden doorgegeven en via de toegangsmethode upstream_resource() ([SWS_CORE_06531]) worden opgevraagd.
Levenscyclus
De initialisatie van ara::core::MonotonicBufferResource kan via meerdere constructors worden geregeld. Naast een parameterloze standaardconstructor ([SWS_CORE_06524]) zijn er overloads beschikbaar die een expliciete upstream-resource aannemen ([SWS_CORE_06521]), een initiële buffergrootte definiëren ([SWS_CORE_06525], [SWS_CORE_06522]) of een extern beschikbaar gesteld ruw geheugengebied (void* buffer, std::size_t buffer_size) als initiële buffer gebruiken ([SWS_CORE_06526], [SWS_CORE_06523]).
Met betrekking tot de eigendomsverhoudingen is de klasse als strikt onkopieerbaar gedefinieerd: de copy constructor ([SWS_CORE_06527]) en de copy assignment operator ([SWS_CORE_06529]) zijn verwijderd (=delete). In tegenstelling tot de ISO-14882-standaard implementeert de AUTOSAR-klasse echter expliciete move-semantiek via de move constructor ([SWS_CORE_06576]) en de move assignment operator ([SWS_CORE_06577]), die telkens als noexcept=default zijn gedefinieerd.
De vernietiging vindt plaats via de destructor ~MonotonicBufferResource() ([SWS_CORE_06528]). Een wezenlijke AUTOSAR-afwijking van de standaard is dat de destructor niet als virtueel is gedeclareerd. Via de methode release() ([SWS_CORE_06530]) kan al het gealloceerde geheugen worden gereset vóór het verstrijken van de levensduur van het object.
Een typische toepassingssequentie omvat het beschikbaar stellen, doorlopende allocatie en de gebundelde vrijgave:
Instantiëring: De applicatie maakt een instantie aan, bijvoorbeeld met specificatie van een buffergrootte en een upstream-resource ([SWS_CORE_06522]) of een vaste buffer ([SWS_CORE_06526]).
Allocatie: Geheugenverzoeken worden bediend via de protected methode do_allocate(bytes, alignment) ([SWS_CORE_06569]). Als de aanwezige buffer niet toereikend is, betrekt de instantie een nieuwe buffer van de upstream-resource.
Deallocatie: Aanroepen van do_deallocate(p, bytes, alignment) ([SWS_CORE_06570]) verkleinen de buffer niet individueel; de interne allocatiewijzer schuift monotoon verder op.
Buffer-reset: Met release() ([SWS_CORE_06530]) worden alle via upstream verkregen geheugenblokken in één keer vrijgegeven en is de buffer gereed voor nieuwe cycli.
Resourcevergelijking: Via do_is_equal() ([SWS_CORE_06571]) kan worden gecontroleerd of twee geheugenresources identiek zijn.
De klasse volgt strikte richtlijnen voor uitzonderingsvrije embedded systemen: alle lidfuncties, constructors en operatoren zijn gedeclareerd als noexcept en bieden volledige uitzonderingsveiligheid.
Bij fouten wijkt het gedrag bewust af van de standaardbibliotheek:
Mislukte allocatie: Wanneer een verzoek in do_allocate() ([SWS_CORE_06569]) niet kan worden afgehandeld, wordt er geen uitzondering std::bad_alloc geworpen, maar wordt een nullptr geretourneerd. Aanroepers moeten de retourwaarde verplicht op nullptr controleren.
Fout bij deallocatie: Mocht er bij de vrijgave in do_deallocate() ([SWS_CORE_06570]) een fout optreden, dan wordt deze volgens de specificatie geruisloos genegeerd.
Vernietiging via basispointer: Aangezien de destructor ([SWS_CORE_06528]) niet virtueel is, leidt een vernietiging via een pointer naar de basisklasse MemoryResource vermoedelijk tot ongedefinieerd gedrag (interpretatie: de vernietiging moet via het concrete type plaatsvinden). Vraag Q-add18020b48f3131 (open)
Deze handleiding werd gegenereerd door een AI-systeem op basis van de specificatie 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
DOOR AI GEGENEREERDongecontroleerdModel: gemini-3.8-flash-medium · Inspanning: medium · Temperatuur: niet regelbaar · Prompt: 601be17f5d68HerkomstOpen vragen (1)
vertaald uit de Duitse handleidinggemini-3.8-flash-low · 2026-10-13 · Duits origineel
Gebruik
De beschermde (protected) lidfunctie do_allocate van de klasse ara::core::MonotonicBufferResource dient voor de allocatie van geheugenbereiken conform [mem.res.monotonic.buffer][SWS_CORE_06569]. Zij implementeert de zuiver virtuele interface do_allocate van de basisklasse ara::core::MemoryResource[SWS_CORE_06566]. Als interpretatie zou de synchrone aanroep vanwege de protected-zichtbaarheid primair indirect via de publieke toewijzingsmethoden van de basisklasse plaatsvinden. Vraag Q-21b2da19c0fd7f8f (open) De functie accepteert de aangevraagde grootte in bytes evenals de gewenste uitlijning (alignment).
Foutafhandeling en uitzonderingsveiligheid
In tegenstelling tot het standaardgedrag van C++ werpt de functie bij allocatiefouten geen std::bad_alloc-exceptie, maar levert in plaats daarvan een nullptr terug [SWS_CORE_06569]. Door de declaratie met noexcept is de methode als uitzonderingsveilig gespecificeerd [SWS_CORE_06569]. Aanroepers moeten daarom het resultaat altijd controleren op nullptr om ontoereikend geheugen te detecteren.
Gelijktijdigheid en wisselwerking
De methode is gespecificeerd als niet-thread-safe [SWS_CORE_06569]. Worden toewijzingen gelijktijdig vanuit meerdere threads geïnitieerd, dan moet de synchronisatie extern plaatsvinden via het aanroepende punt. Dit komt overeen met het gedrag van ara::core::UnsynchronizedPoolResource::do_allocate[SWS_CORE_00058], terwijl ara::core::SynchronizedPoolResource::do_allocate voor gelijktijdige aanroepen thread-safe is ontworpen [SWS_CORE_00061].
Deze gebruiksinstructie is geautomatiseerd gegenereerd aan de hand van de specificatie 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
DOOR AI GEGENEREERDongecontroleerdModel: gemini-3.8-flash-medium · Inspanning: medium · Temperatuur: niet regelbaar · Prompt: e7d49ed79e7cHerkomstOpen vragen (1)
vertaald uit de Duitse handleidinggemini-3.8-flash-low · 2026-10-13 · Duits origineel
Gebruik
De lidfunctie do_deallocate van de klasse ara::core::MonotonicBufferResource dient voor de deallocatie van geheugenbereiken conform [SWS_CORE_06570]. Zij is gedefinieerd via het headerbestand #include "ara/core/memory_resource.h"[SWS_CORE_06570]. De functie accepteert een pointer p naar het vrij te geven geheugenbereik evenals de parameters bytes en alignment (elk van het type std::size_t) en levert geen retourwaarde op (void) [SWS_CORE_06570]. De semantiek volgt de bepaling in [mem.res.monotonic.buffer] met specifieke AUTOSAR-afwijkingen [SWS_CORE_06570].
Foutafhandeling
De functie is gedeclareerd als noexcept en waarborgt exceptieveiligheid (exception safe) [SWS_CORE_06570]. Doet zich bij de uitvoering een fout voor, dan wordt deze geruisloos genegeerd (errors will be silently ignored) [SWS_CORE_06570]. Er bestaan noch retourwaarden noch specifieke foutcodes voor foutmeldingen.
Gelijktijdigheid en beperkingen
Wat betreft de gelijktijdigheid is do_deallocate gespecificeerd als niet-thread-safe (not thread-safe) [SWS_CORE_06570]. Een gelijktijdige aanroep vanuit meerdere threads zonder externe synchronisatie is niet toegestaan. De methode bezit de zichtbaarheid protected en overschrijft de zuiver virtuele interface van de basisklasse ara::core::MemoryResource[SWS_CORE_06567]. Interpretatie: aanroepen zouden regulier via de publieke deallocatie-interface van de basisklasse worden afgehandeld. Vraag Q-6916292acaa8993b (open)
Samenspel
Terwijl de basisklasse ara::core::MemoryResource de deallocatiemethode met private zichtbaarheid voorschrijft [SWS_CORE_06567], implementeren MonotonicBufferResource evenals de verwante klassen ara::core::SynchronizedPoolResource[SWS_CORE_00041] en ara::core::UnsynchronizedPoolResource[SWS_CORE_00059] deze als beschermd (protected) met geruisloze foutafhandeling. In tegenstelling tot de gesynchroniseerde poolresource [SWS_CORE_00041], die thread-safe is, vereist MonotonicBufferResource net zoals ara::core::UnsynchronizedPoolResource[SWS_CORE_00059] het uitsluiten van parallelle toegangen.
Deze gebruiksinstructie is opgesteld door een AI en is gebaseerd op de bepalingen van de specificatie AUTOSAR Adaptive R25-11.
As per corresponding usage in [mem.res.monotonic.buffer] except for the following deviations: 1. The function is noexcept
DOOR AI GEGENEREERDongecontroleerdModel: gemini-3.8-flash-medium · Inspanning: medium · Temperatuur: niet regelbaar · Prompt: fc4ade44f9c3Herkomst
vertaald uit de Duitse handleidinggemini-3.8-flash-low · 2026-10-13 · Duits origineel
De protected-methode do_is_equal van de klasse ara::core::MonotonicBufferResource overschrijft de zuiver virtuele interface van de basisklasse ara::core::MemoryResource conform [SWS_CORE_06571]. Zij vergelijkt de huidige instantie synchroon met een overgedragen const MemoryResource &other op gelijkheid wat betreft de geheugenbeheersemantiek.
Gebruik en semantiek
De aanroep vindt typisch indirect plaats via de publieke interface van MemoryResource. Conform [SWS_CORE_06571] richt het gedrag zich naar het gebruik in [mem.res.monotonic.buffer], maar vertoont de expliciete afwijking dat de functie gedeclareerd is als noexcept. De retourwaarde is een bool, die aangeeft of beide resources uitwisselbaar dan wel identiek zijn.
Foutafhandeling en gelijktijdigheid
Exceptieveiligheid: de functie is gespecificeerd als exception safe en werpt vanwege de noexcept-signatuur conform [SWS_CORE_06571] geen excepties. Specifieke foutcodes of DET-/DEM-meldingen bestaan niet.
Thread-safety: de bewerking is geclassificeerd als thread-safe ([SWS_CORE_06571]) en kan gelijktijdig worden uitgevoerd.
Samenspel
De functie implementeert het virtuele contract uit ara::core::MemoryResource ([SWS_CORE_06568]). Vergelijkbare implementaties van de gelijkheidsvergelijking zijn ook te vinden in andere geheugenresources zoals ara::core::SynchronizedPoolResource ([SWS_CORE_00042]) en ara::core::UnsynchronizedPoolResource ([SWS_CORE_00060]).
Deze tekst is gegenereerd door een AI op basis van de specificatie R25-11.
As per corresponding usage in [mem.res.monotonic.buffer] except for the following deviations: 1. The function is noexcept
DOOR AI GEGENEREERDongecontroleerdModel: gemini-3.8-flash-medium · Inspanning: medium · Temperatuur: niet regelbaar · Prompt: 082c843665ceHerkomstOpen vragen (1)
vertaald uit de Duitse handleidinggemini-3.8-flash-low · 2026-10-13 · Duits origineel
De lidfunctie release() van de klasse ara::core::MonotonicBufferResource ([SWS_CORE_06530]) dient voor het vrijgeven van het door de bufferresource beheerde geheugen. De aanroep geschiedt synchroon, accepteert geen parameters en levert geen retourwaarde op (void).
Wat betreft de foutafhandeling is de functie gedeclareerd als noexcept en gespecificeerd als uitzonderingsveilig (exception safe) ([SWS_CORE_06530]). Er bestaan geen specifieke foutcodes en er worden geen foutmeldingen verzonden naar centrale diagnose- of meldingsinstanties.
Wat betreft de gelijktijdigheid is release() expliciet geclassificeerd als niet-thread-safe (not thread-safe) ([SWS_CORE_06530]). Gelijktijdige toegang tot dezelfde instantie zonder externe synchronisatie is niet toegestaan. Interpretatie: door de ontleende semantiek uit [mem.res.monotonic.buffer] zouden met de aanroep vermoedelijk alle eerder via deze resource beschikbaar gestelde geheugenbereiken ongeldig worden. Vraag Q-bd46bd9971926d95 (open)
In het samenspel van de geheugenresources uit #include "ara/core/memory_resource.h" verschilt de functie qua gelijktijdigheidsgedrag van ara::core::SynchronizedPoolResource::release(), die thread-safe is ([SWS_CORE_00037]), terwijl zij zich analoog gedraagt aan ara::core::UnsynchronizedPoolResource::release(), die eveneens niet thread-safe is ([SWS_CORE_00065]).
Deze tekst is gegenereerd door een AI op basis van de specificatie-eisen van AUTOSAR R25-11.
As per corresponding usage in [mem.res.monotonic.buffer] except for the following deviations: 1. The function is noexcept
DOOR AI GEGENEREERDongecontroleerdModel: gemini-3.8-flash-medium · Inspanning: medium · Temperatuur: niet regelbaar · Prompt: 34a11a1fee7aHerkomstOpen vragen (1)
vertaald uit de Duitse handleidinggemini-3.8-flash-low · 2026-10-13 · Duits origineel
De lidfunctie upstream_resource() van de klasse ara::core::MonotonicBufferResource geeft synchroon een pointer naar de bovenliggende geheugenresource van het type MemoryResource* terug [SWS_CORE_06531]. De aanroep geschiedt via de header #include "ara/core/memory_resource.h" en accepteert geen parameters [SWS_CORE_06531]. Interpretatie: de geretourneerde geheugenresource zou vermoedelijk als bovenliggende buffer fungeren indien de interne buffer van de instantie ontoereikend is voor allocaties. Vraag Q-e01e234e281bc4c6 (open)
Wat betreft de foutafhandeling en exceptieveiligheid is de methode gedeclareerd als noexcept en volledig uitzonderingsveilig (exception safe) [SWS_CORE_06531]. Specifieke foutcodes, foutobjecten of diagnosemeldingen zoals DET of DEM zijn voor deze zuivere getter-aanroep niet voorzien in de specificatie [SWS_CORE_06531].
Wat betreft de gelijktijdigheid is de methode gespecificeerd als const evenals thread-safe (thread-safe) [SWS_CORE_06531]. Daardoor kan de pointer naar de upstream-resource vanuit meerdere threads parallel worden opgevraagd zonder externe synchronisatie.
De functionele semantiek volgt de bepaling in [mem.res.monotonic.buffer], maar vertoont de normatieve afwijking dat de functie in de AUTOSAR Adaptive-standaard expliciet is gedefinieerd als noexcept[SWS_CORE_06531]. Een analoog interfacepatroon voor het beschikbaar stellen van de bovenliggende resource wordt ook gebruikt door de verwante klassen ara::core::SynchronizedPoolResource[SWS_CORE_00038] en ara::core::UnsynchronizedPoolResource[SWS_CORE_00056].
Deze tekst is opgesteld door een AI op basis van de specificatiegegevens.
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 · Duits origineel