Arcane  v3.16.0.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
Référence de la classe Arcane::impl::StackMemoryAllocatorfinal

Allocateur avec buffer pré-alloué. Plus de détails...

#include <arcane/utils/SmallArray.h>

+ Graphe d'héritage de Arcane::impl::StackMemoryAllocator:
+ Graphe de collaboration de Arcane::impl::StackMemoryAllocator:

Fonctions membres publiques

 StackMemoryAllocator (void *buf, size_t size)
 
bool hasRealloc (MemoryAllocationArgs) const final
 Indique si l'allocateur supporte la sémantique de realloc.
 
AllocatedMemoryInfo allocate (MemoryAllocationArgs args, Int64 new_size) final
 Alloue de la mémoire pour new_size octets et retourne le pointeur.
 
AllocatedMemoryInfo reallocate (MemoryAllocationArgs args, AllocatedMemoryInfo current_ptr, Int64 new_size) final
 Réalloue de la mémoire pour new_size octets et retourne le pointeur.
 
void deallocate (MemoryAllocationArgs args, AllocatedMemoryInfo ptr) final
 Libère la mémoire dont l'adresse de base est ptr.
 
Int64 adjustedCapacity (MemoryAllocationArgs, Int64 wanted_capacity, Int64) const final
 Ajuste la capacité suivant la taille d'élément.
 
size_t guaranteedAlignment (MemoryAllocationArgs) const final
 Valeur de l'alignement garanti par l'allocateur.
 
- Fonctions membres publiques hérités de Arcane::IMemoryAllocator
virtual ~IMemoryAllocator ()=default
 Détruit l'allocateur.
 
virtual size_t guarantedAlignment (MemoryAllocationArgs args) const
 Valeur de l'alignement garanti par l'allocateur.
 
virtual void notifyMemoryArgsChanged (MemoryAllocationArgs old_args, MemoryAllocationArgs new_args, AllocatedMemoryInfo ptr)
 Notifie du changement des arguments spécifiques à l'instance.
 
virtual void copyMemory (MemoryAllocationArgs args, AllocatedMemoryInfo destination, AllocatedMemoryInfo source)
 Copie la mémoire entre deux zones.
 
virtual eMemoryResource memoryResource () const
 Ressource mémoire fournie par l'allocateur.
 

Attributs privés

void * m_preallocated_buffer = nullptr
 
Int64 m_preallocated_size = 0
 

Description détaillée

Allocateur avec buffer pré-alloué.

Le buffer pré-alloué m_preallocated_buffer est utilisé lorsque la taille demandée pour l'allocation est inférieure ou égale à m_preallocated_size.

Le buffer utilisé doit rester valide durant toute la durée de vie de l'allocateur.

Définition à la ligne 38 du fichier SmallArray.h.

Documentation des constructeurs et destructeur

◆ StackMemoryAllocator()

Arcane::impl::StackMemoryAllocator::StackMemoryAllocator ( void * buf,
size_t size )
inline

Définition à la ligne 43 du fichier SmallArray.h.

Documentation des fonctions membres

◆ adjustedCapacity()

Int64 Arcane::impl::StackMemoryAllocator::adjustedCapacity ( MemoryAllocationArgs args,
Int64 wanted_capacity,
Int64 element_size ) const
inlinefinalvirtual

Ajuste la capacité suivant la taille d'élément.

Cette méthode est utilisée pour éventuellement modifié le nombre d'éléments alloués suivant leur taille. Cela permet par exemple pour les allocateurs alignés de garantir que le nombre d'éléments alloués est un multiple de cet alignement.

Implémente Arcane::IMemoryAllocator.

Définition à la ligne 54 du fichier SmallArray.h.

◆ allocate()

AllocatedMemoryInfo Arcane::impl::StackMemoryAllocator::allocate ( MemoryAllocationArgs args,
Int64 new_size )
finalvirtual

Alloue de la mémoire pour new_size octets et retourne le pointeur.

La sémantique est équivalent à malloc():

  • new_size peut valoir zéro et dans ce cas le pointeur retourné est soit nul, soit une valeur spécifique
  • le pointeur retourné peut être nul si la mémoire n'a pas pu être allouée.

Implémente Arcane::IMemoryAllocator.

Définition à la ligne 34 du fichier SmallArray.cc.

◆ deallocate()

void Arcane::impl::StackMemoryAllocator::deallocate ( MemoryAllocationArgs args,
AllocatedMemoryInfo ptr )
finalvirtual

Libère la mémoire dont l'adresse de base est ptr.

Le pointeur ptr doit avoir été alloué via l'appel à allocate() ou reallocate() de cette instance.

La sémantique de cette méthode équivalente à free() et donc ptr peut être nul auquel cas aucune opération n'est effectuée.

Implémente Arcane::IMemoryAllocator.

Définition à la ligne 90 du fichier SmallArray.cc.

Références Arcane::AllocatedMemoryInfo::baseAddress().

+ Voici le graphe d'appel pour cette fonction :

◆ guaranteedAlignment()

size_t Arcane::impl::StackMemoryAllocator::guaranteedAlignment ( MemoryAllocationArgs args) const
inlinefinalvirtual

Valeur de l'alignement garanti par l'allocateur.

Cette méthode permet de s'assurer qu'un allocateur a un alignement suffisant pour certaines opérations comme la vectorisation par exemple.

S'il n'y a aucune garantie, retourne 0.

Implémente Arcane::IMemoryAllocator.

Définition à la ligne 55 du fichier SmallArray.h.

◆ hasRealloc()

bool Arcane::impl::StackMemoryAllocator::hasRealloc ( MemoryAllocationArgs ) const
inlinefinalvirtual

Indique si l'allocateur supporte la sémantique de realloc.

Les allocateurs par défaut du C (malloc/realloc/free) supportent évidemment le realloc mais ce n'est pas forcément le cas des allocateurs spécifiques avec alignement mémoire (comme par exemple posix_memalign).

Réimplémentée à partir de Arcane::IMemoryAllocator.

Définition à la ligne 50 du fichier SmallArray.h.

◆ reallocate()

AllocatedMemoryInfo Arcane::impl::StackMemoryAllocator::reallocate ( MemoryAllocationArgs args,
AllocatedMemoryInfo current_ptr,
Int64 new_size )
finalvirtual

Réalloue de la mémoire pour new_size octets et retourne le pointeur.

Le pointeur current_ptr doit avoir été alloué via l'appel à allocate() ou reallocate() de cette instance.

La sémantique de cette méthode est équivalente à realloc():

  • current_ptr peut-être nul auquel cas cet appel est équivalent à allocate().
  • le pointeur retourné peut être nul si la mémoire n'a pas pu être allouée.

Implémente Arcane::IMemoryAllocator.

Définition à la ligne 51 du fichier SmallArray.cc.

Références Arcane::AllocatedMemoryInfo::baseAddress().

+ Voici le graphe d'appel pour cette fonction :

Documentation des données membres

◆ m_preallocated_buffer

void* Arcane::impl::StackMemoryAllocator::m_preallocated_buffer = nullptr
private

Définition à la ligne 59 du fichier SmallArray.h.

◆ m_preallocated_size

Int64 Arcane::impl::StackMemoryAllocator::m_preallocated_size = 0
private

Définition à la ligne 60 du fichier SmallArray.h.


La documentation de cette classe a été générée à partir des fichiers suivants :