Sous Windows, pour des applications très exigeantes, un programmeur peut utiliser HeapCreate, HeapAlloc afin de mieux gérer et contrôler l'allocation de la mémoire - l'accélérer (alias private allocators). Quel est l'équivalent en programmation C++ Linux?HeapCreate, HeapAlloc sous Linux, allocateur privé pour Linux
Répondre
Si vous souhaitez utiliser votre propre allocateur privé, utilisez mmap()
pour mapper une quantité de mémoire dans votre processus, puis vous pouvez utiliser cette mémoire comme vous le souhaitez. Ouvrez un descripteur de fichier à /dev/zero
, puis utilisez-le comme paramètre 'fildes' pour mmap()
. Voir man mmap
pour plus de détails sur les paramètres à transmettre. À cet égard mmap()
joue le même rôle que HeapCreate()
.
Vous n'avez pas besoin d'ouvrir '/ dev/zero' - vous pouvez simplement utiliser l'indicateur' MAP_ANONYMOUS' et passer -1 comme argument 'fd'. – caf
C'est vrai, et c'est souvent plus rapide si vous le faites, même si 'MAP_ANONYMOUS' est moins portable (par exemple, il n'est pas inclus dans SUSv2). Mais vous avez raison, il serait presque certainement faire dans cette situation :-) – psmears
SUSv2? Qui donne un cornichon :) –
Pouvez-vous fournir une comparaison du code source Windows en utilisant HeapCreate(). HeapAlloc(). Heapfree(). et le code source en utilisant mmap(). fonctions pour faire la même chose? – PatrickM