Namespaces
Variants

std::pmr:: unsynchronized_pool_resource

From cppreference.net
Memory management library
( exposition only* )
Allocators
Uninitialized memory algorithms
Constrained uninitialized memory algorithms
Memory resources
pmr::unsynchronized_pool_resource
(C++17)

Uninitialized storage (until C++20)
( until C++20* )
( until C++20* )
( until C++20* )

Garbage collector support (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
Défini dans l'en-tête <memory_resource>
class unsynchronized_pool_resource : public std:: pmr :: memory_resource ;
(depuis C++17)

La classe std::pmr::unsynchronized_pool_resource est une classe de ressource mémoire à usage général avec les propriétés suivantes :

  • Il possède la mémoire allouée et la libère lors de la destruction, même si deallocate n'a pas été appelé pour certains blocs alloués.
  • Il consiste en une collection de pools qui répondent aux demandes pour différentes tailles de blocs. Chaque pool gère une collection de chunks qui sont ensuite divisés en blocs de taille uniforme.
  • Les appels à do_allocate sont dispatchés vers le pool fournissant les plus petits blocs pouvant accommoder la taille demandée.
  • L'épuisement de la mémoire dans le pool entraîne que la prochaine demande d'allocation pour ce pool alloue un chunk de mémoire supplémentaire depuis l' upstream allocator pour reconstituer le pool. La taille du chunk obtenu augmente géométriquement.
  • Les demandes d'allocation qui dépassent la plus grande taille de bloc sont servies directement depuis l' upstream allocator .
  • La plus grande taille de bloc et la taille maximale de chunk peuvent être ajustées en passant une structure std::pmr::pool_options à son constructeur.

unsynchronized_pool_resource n'est pas thread-safe et ne peut pas être accédé depuis plusieurs threads simultanément ; utilisez synchronized_pool_resource si un accès depuis plusieurs threads est requis.

Fonctions membres

construit un unsynchronized_pool_resource
(fonction membre publique)
[virtuel]
détruit un unsynchronized_pool_resource , libérant toute la mémoire allouée
(fonction membre publique virtuelle)
operator=
[supprimé]
l'opérateur d'affectation par copie est supprimé. unsynchronized_pool_resource n'est pas copiable par affectation
(fonction membre publique)
Fonctions membres publiques
libère toute la mémoire allouée
(fonction membre publique)
retourne un pointeur vers la ressource mémoire amont
(fonction membre publique)
retourne les options qui contrôlent le comportement de regroupement de cette ressource
(fonction membre publique)
Fonctions membres protégées
[virtuel]
alloue de la mémoire
(fonction membre protégée virtuelle)
[virtuel]
retourne la mémoire au regroupement
(fonction membre protégée virtuelle)
[virtuel]
compare pour l'égalité avec un autre std::pmr::memory_resource
(fonction membre protégée virtuelle)