Dient als basisinterface voor exceptievrije geheugenallocatie en -vrijgave.
DOOR AI GEGENEREERDongecontroleerdModel: gemini-3.8-flash-medium · Inspanning: medium · Temperatuur: niet regelbaar · Prompt: efd95fd8a941HerkomstOpen vragen (2)
vertaald uit de Duitse handleidinggemini-3.8-flash-low · 2026-10-13 · Duits origineel
Dient als basisinterface voor exceptievrije geheugenallocatie en -vrijgave.
De klasse biedt een abstracte basisinterface voor polymorfe geheugenresources die is gemodelleerd naar de C++-standaardinterface. Via het non-virtual-interface-patroon delegeert zij allocatie- en vrijgaveverzoeken door naar afgeleide resourceklassen [SWS_CORE_06503]. In tegenstelling tot de C++-standaard zijn alle interfacefuncties als exceptieveilig gedeclareerd, waardoor geheugenfouten niet via een exceptie, maar door de teruggave van een null-pointer worden gesignaleerd [SWS_CORE_06566]. Bovendien zijn allocatie- en vrijgaveprocessen standaard niet thread-safe ontworpen.
Context
De klasse ara::core::MemoryResource biedt in het AUTOSAR Adaptive Platform (module core) een abstracte basisinterface voor geheugenbeheer, die is ontleend aan het C++-standaardtype std::pmr::memory_resource. Zij dient als gemeenschappelijk fundament voor uitwisselbare allocatiestrategieën en ontkoppelt aanroepende datastructuren van de concrete mechanismen voor het beschikbaar stellen van geheugen. Als wezenlijk verschil met de ISO-C++-standaard ziet de AUTOSAR-specificatie volledig af van dynamische excepties en formuleert zij voor alle operaties strikte noexcept-garanties [SWS_CORE_06501].
De architectuur volgt het non-virtual-interface-patroon (NVI): publieke, niet-virtuele elementfuncties definiëren de vaste interface voor aanroepers, terwijl het daadwerkelijke gedrag in afgeleide klassen moet worden geïmplementeerd via private, puur virtuele elementfuncties. Interpretatie: Concrete geheugenresources leiden af van ara::core::MemoryResource en overschrijven de private basisinterfaces do_allocate[SWS_CORE_06566], do_deallocate[SWS_CORE_06567] en do_is_equal[SWS_CORE_06568] om applicatiespecifieke buffer- of pool-beheervoorzieningen beschikbaar te stellen. Vraag Q-d09d47b0a8f6b822 (open)
Levenscyclus
De instantiëring van specialisaties vindt plaats via de parameterloze standaardconstructor, die als noexcept=default is gespecificeerd [SWS_CORE_06501]. Eveneens staan een noexcept-copy-constructor [SWS_CORE_06502] en een noexcept-copy-assignment-operator [SWS_CORE_06507] ter beschikking. In aanvulling op de C++-standaard definieert AUTOSAR expliciet een move-constructor [SWS_CORE_06574] en een move-assignment-operator [SWS_CORE_06575], die beide als noexcept=default zijn vastgelegd.
De levenscyclus van polymorfe instanties wordt gewaarborgd door een virtuele destructor die als exceptieveilig is gedeclareerd [SWS_CORE_06506]. Met betrekking tot concurrency dient te worden opgemerkt dat zowel de destructor als de allocatie- en vrijgavefuncties allocate[SWS_CORE_06503] en deallocate[SWS_CORE_06504] als niet thread-safe zijn gespecificeerd. Interpretatie: Voor thread-safe allocaties en vrijgaven zijn vermoedelijk bovenliggende synchronisatiemechanismen of gespecialiseerde subklassen verantwoordelijk, aangezien de basismethoden als niet thread-safe zijn gespecificeerd. Vraag Q-adac4b6cf6e0db7c (open) De gelijkheidscontrole via is_equal is daarentegen expliciet thread-safe ontworpen [SWS_CORE_06505].
Gebruikspad
Het primaire verloop bij het geheugenbeheer bestaat uit de aanvraag, de optionele identiteitscontrole en de aansluitende vrijgave van geheugenblokken via de publieke NVI-interface:
Geheugenallocatie: De aanroeper roept allocate aan onder vermelding van de bytegrootte en de optionele uitlijning [SWS_CORE_06503]. De methode delegeert intern naar de private puur virtuele functie do_allocate van de concrete klasse [SWS_CORE_06566].
Gelijkheidscontrole: Om vast te stellen of twee geheugenresources equivalent zijn aan elkaar en geheugen van de ene door de andere kan worden vrijgegeven, roept de gebruiker is_equal aan [SWS_CORE_06505], wat delegeert naar do_is_equal[SWS_CORE_06568].
Geheugenvrijgave: Na beëindiging van het gebruik wordt het blok via deallocate onder opgave van de pointer, de bytegrootte en de alignment teruggegeven [SWS_CORE_06504], waardoor de interne doorsturing naar do_deallocate plaatsvindt [SWS_CORE_06567].
Een centraal kenmerk van de klasse is het volledig uitbannen van excepties. Waar de ISO-C++-standaard bij uitputting voorziet in een exceptie van het type std::bad_alloc, wijkt AUTOSAR hiervan doelbewust af: Mislukt een allocatie in allocate resp. do_allocate, dan levert de functie dwingend nullptr terug [SWS_CORE_06503], [SWS_CORE_06566]. Door het attribuut [[nodiscard]] bij allocate wordt de aanroeper ertoe verplicht de retourwaarde altijd in ontvangst te nemen en vóór toegang te controleren op geldigheid.
Voor de vrijgaveoperaties deallocate en do_deallocate geldt dat eventuele fouten bij het teruggeven van het geheugen stilzwijgend worden genegeerd [SWS_CORE_06504], [SWS_CORE_06567]. Er worden noch excepties geworpen noch foutcodes teruggegeven, wat de naleving van harde realtime- en veiligheidseisen in de context van het adaptieve platform vergemakkelijkt.
Deze tekst is gecureerd door een AI en is uitsluitend gebaseerd op de specificaties van het 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
DOOR AI GEGENEREERDongecontroleerdModel: gemini-3.8-flash-medium · Inspanning: medium · Temperatuur: niet regelbaar · Prompt: 6735dc6d085fHerkomst
vertaald uit de Duitse handleidinggemini-3.8-flash-low · 2026-10-13 · Duits origineel
De lidfunctie allocate van de klasse ara::core::MemoryResource dient voor de allocatie van lineair geheugen met vooraf bepaalde bytegrootte en uitlijning [SWS_CORE_06503]. Zij oriënteert zich op de C++-standaardinterface [mem.res], maar wijkt in de uitzonderingsafhandeling wezenlijk af [SWS_CORE_06503].
Gebruik en parameters
De aanroep vindt synchroon plaats via de parameters bytes (aantal aan te vragen bytes) en het optionele alignment, dat standaard op alignof(std::max_align_t) is ingesteld [SWS_CORE_06503]. De retourwaarde is voorzien van het attribuut [[nodiscard]], waardoor de geretourneerde pointer van het type void* in de aanroeper verplicht moet worden geëvalueerd [SWS_CORE_06503].
Foutafhandeling en exception-veiligheid
In tegenstelling tot het standaardgedrag genereert de functie in geval van een fout geen uitzondering van het type std::bad_alloc, maar is zij gedeclareerd als noexcept en geldt zij als uitzonderingsveilig (exception safe) [SWS_CORE_06503]:
Succes: levert een geldige pointer op naar het geallokeerde geheugengebied conform [mem.res][SWS_CORE_06503].
Mislukking: mislukt de geheugentoewijzing, dan retourneert de functie in plaats daarvan nullptr[SWS_CORE_06503]. De aanroeper moet het resultaat daarom altijd expliciet controleren op een null-pointer.
Gelijktijdigheid en wisselwerking
De functie is gespecificeerd als niet thread-safe (not thread-safe) [SWS_CORE_06503]. Parallelle aanroepen op dezelfde instantie van MemoryResource vereisen bijgevolg een externe synchronisatie door de aanroeper. Dit fouttolerante, uitzonderingsvrije patroon is consistent terug te vinden in andere geheugencomponenten van AUTOSAR Adaptive: zo gebruikt ara::core::PolymorphicAllocator::allocate dezelfde aanpak zonder exceptions [SWS_CORE_06547], en ook de speciale instantie NullMemoryResource signaleert geheugenuitputting door teruggave van nullptr[SWS_CORE_06563].
Deze gebruiksinstructie is geautomatiseerd gegenereerd op basis van de AUTOSAR-specificatie 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
DOOR AI GEGENEREERDongecontroleerdModel: gemini-3.8-flash-medium · Inspanning: medium · Temperatuur: niet regelbaar · Prompt: 65d739156bbeHerkomst
vertaald uit de Duitse handleidinggemini-3.8-flash-low · 2026-10-13 · Duits origineel
De functie deallocate van de klasse ara::core::MemoryResource dient voor de vrijgave van geheugenbereiken conform [SWS_CORE_06504]. Het gebruik volgt in principe het standaardgedrag uit [mem.res], maar vertoont specifieke afwijkingen. De aanroep geschiedt synchroon via de signatuur void deallocate(void *p, std::size_t bytes, std::size_t alignment=max_align) noexcept, waarbij de pointer p naar het vrij te geven blok, de grootte bytes evenals optioneel de uitlijning (alignment) worden doorgegeven [SWS_CORE_06504].
Wat het foutgedrag betreft, is de functie gespecificeerd als noexcept en uitzonderingsveilig (exception safe) [SWS_CORE_06504]. Mislukt de vrijgave, dan worden fouten geruisloos genegeerd (errors will be silently ignored) [SWS_CORE_06504]. Er worden geen excepties geworpen en er worden geen foutmeldingen via DET of DEM uitgegeven.
Wat betreft de gelijktijdigheid is de functie uitdrukkelijk als niet-thread-safe (not thread-safe) geclassificeerd [SWS_CORE_06504]. Gelijktijdige toegangen tot dezelfde resource-instantie moeten daarom extern door de aanroeper worden gesynchroniseerd.
In het samenspel met het allocatorconcept correspondeert deze functie met de getypeerde interface deallocate van de klasse ara::core::PolymorphicAllocator uit [SWS_CORE_06548], die vergelijkbare afwijkingen vertoont met betrekking tot noexcept en geruisloze foutafhandeling.
Deze gebruiksinstructie is automatisch gegenereerd door een AI-curatie-assistent en is uitsluitend gebaseerd op de specificatiegegevens van 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
DOOR AI GEGENEREERDongecontroleerdModel: gemini-3.8-flash-medium · Inspanning: medium · Temperatuur: niet regelbaar · Prompt: fa83e476b05dHerkomstOpen vragen (1)
vertaald uit de Duitse handleidinggemini-3.8-flash-low · 2026-10-13 · Duits origineel
De zuiver virtuele methode do_allocate van de klasse ara::core::MemoryResource dient voor de allocatie van geheugenblokken met een vooraf opgegeven bytegrootte en uitlijning [SWS_CORE_06566]. Als parameters accepteert ze het aantal bytes (bytes) evenals de vereiste uitlijning (alignment). Bij een succesvolle toewijzing levert ze synchroon een pointer van het type void * naar het gereserveerde geheugenbereik op [SWS_CORE_06566].
Met betrekking tot foutafhandeling wijkt de functie doelgericht af van de reguliere C++-standaard: ze is gedeclareerd als noexcept en werpt bij mislukkingen geen std::bad_alloc-uitzondering op, maar levert in plaats daarvan nullptr op [SWS_CORE_06566]. Aanroepers moeten het allocatieresultaat daarom altijd controleren op een null-pointer.
Wat betreft gelijktijdigheid is de methode gespecificeerd als not thread-safe[SWS_CORE_06566]. Parallelle aanroepen via dezelfde instantie vereisen een externe synchronisatie, voor zover de afgeleide implementatie niet in een eigen bescherming voorziet. Vanwege de private zichtbaarheid vindt de aanroep door gebruikers vermoedelijk typisch indirect plaats via de overkoepelende interface van de basisklasse. Vraag Q-5cbdabf121ed4550 (open)
In het samenspel van het geheugenbeheer vormt de methode het directe tegenstuk van do_deallocate, dat verantwoordelijk is voor het vrijgeven van het gealloceerde geheugen en fouten stilzwijgend negeert [SWS_CORE_06567]. De vergelijkingsfunctie do_is_equal controleert bovendien of twee resource-instanties met betrekking tot allocatie en vrijgave compatibel zijn met elkaar [SWS_CORE_06568].
Deze gebruiksinstructie is geautomatiseerd gegenereerd op basis van de specificatie.
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
DOOR AI GEGENEREERDongecontroleerdModel: gemini-3.8-flash-medium · Inspanning: medium · Temperatuur: niet regelbaar · Prompt: fca1a9bccecbHerkomstOpen vragen (1)
vertaald uit de Duitse handleidinggemini-3.8-flash-low · 2026-10-13 · Duits origineel
De zuiver virtuele lidfunctie do_deallocate van de klasse ara::core::MemoryResource (gedeclareerd in ara/core/memory_resource.h) dient conform [SWS_CORE_06567] voor het vrijgeven van eerder gereserveerd geheugen. Deze accepteert de pointer p naar het geheugengebied evenals de grootte bytes en vereiste uitlijning alignment ervan. De semantiek komt in beginsel overeen met de C++-standaard [mem.res], maar vertoont twee doorslaggevende Adaptive-specifieke afwijkingen [SWS_CORE_06567].
Ten eerste is de functie gedeclareerd als noexcept en garandeert deze uitzonderingsveiligheid (exception safe) [SWS_CORE_06567]. Ten tweede worden eventuele fouten tijdens het vrijgeven stilzwijgend genegeerd, zodat mislukte operaties noch foutmeldingen mogen veroorzaken noch de programmastroom mogen onderbreken [SWS_CORE_06567].
Wat betreft gelijktijdigheid is do_deallocate gespecificeerd als not thread-safe en bezit het de zichtbaarheid private[SWS_CORE_06567]. Als implementatiedetail van een polymorfe geheugenbron wordt deze vermoedelijk synchroon via de bovenliggende openbare aanroepinterface uitgevoerd. Vraag Q-3f97e122ee7fb281 (open) Concurrerende vrijgaven op dezelfde bron moeten door afgeleide klassen indien nodig zelfstandig worden gesynchroniseerd.
In de module core vormt de functie de tegenhanger van de allocatie do_allocate[SWS_CORE_06566], die in geval van een fout nullptr oplevert in plaats van een exceptie. De vergelijking met andere bronnen vindt plaats via de methode do_is_equal[SWS_CORE_06568], die in tegenstelling tot de deallocatie expliciet is gedefinieerd als thread-safe.
Deze gebruiksinstructie is automatisch gegenereerd op basis van de specificatie van AUTOSAR R25-11.
DOOR AI GEGENEREERDongecontroleerdModel: gemini-3.8-flash-medium · Inspanning: medium · Temperatuur: niet regelbaar · Prompt: c0f1ba532a98HerkomstOpen vragen (1)
vertaald uit de Duitse handleidinggemini-3.8-flash-low · 2026-10-13 · Duits origineel
De zuiver virtuele lidfunctie do_is_equal wordt gedeclareerd in header #include "ara/core/memory_resource.h" in de namespace van ara::core::MemoryResource ([SWS_CORE_06568]). Deze dient conform de C++-specificatie [mem.res] voor de synchrone vergelijking op gelijkheid van de huidige geheugenbron met een meegegeven referentie const MemoryResource &other ([SWS_CORE_06568]). Aangezien de methode is gedefinieerd met private zichtbaarheid (private), wordt de aanroep ervan als implementatiedetail vermoedelijk polymorf afgehandeld via de openbare interface van klasse ara::core::MemoryResource ([SWS_CORE_06568]). Vraag Q-cbe02f652b43d6ec (open)
Wat betreft uitvoering en foutveiligheid is do_is_equal gedeclareerd als exception safe en noexcept ([SWS_CORE_06568]). De functie mag derhalve onder geen enkele voorwaarde excepties werpen en signaleert het resultaat direct via de booleaanse retourwaarde ([SWS_CORE_06568]). Bovendien is de methode gespecificeerd als thread-safe, zodat afgeleide implementaties ook bij gelijktijdige vergelijkingen thread-safety moeten waarborgen ([SWS_CORE_06568]).
In samenspel met de overige virtuele methoden van het geheugenbeheer completeert do_is_equal het trio van aanpassingspunten van afgeleide bronklassen ([SWS_CORE_06568]). Terwijl de geheugentoewijzing do_allocate in geval van een fout nullptr oplevert ([SWS_CORE_06566]) en do_deallocate fouten stilzwijgend negeert ([SWS_CORE_06567]), zijn beide functies in tegenstelling tot do_is_equal aangeduid als niet thread-veilig (not thread-safe) ([SWS_CORE_06566], [SWS_CORE_06567]). Dit onderstreept de bijzondere eis aan do_is_equal om gelijktijdige bronvergelijkingen te beveiligen ([SWS_CORE_06568]).
Deze tekst is gegenereerd door een AI en dient als gebruiksinstructie op basis van de AUTOSAR-specificatie.
gemini-3.8-flash-low· 2026-10-13 · Duits origineel