2009-05-12 7 views
2

ATTENDU que vous disposez déjà d'une zone de mémoire fixe que vous souhaitez utiliser, quelles bibliothèques C ou C++ vous permettront de stocker une structure dynamique (par exemple un hachage) dans cette mémoire?structures dynamiques dans la mémoire statique?

c.-à-d. Que la bibliothèque de hachage ne doit contenir aucun appel à malloc ou à new, mais doit prendre un paramètre lui indiquant l'emplacement et la taille de la mémoire qu'il est autorisé à utiliser.

(bonus si la bibliothèque utilise des décalages plutôt que des pointeurs internes, dans le cas où la mémoire partagée est mis en correspondance avec différents espaces d'adressage dans chaque processus qui l'utilise)

+0

Pourrait préciser votre question avec du code? Je ne vois pas comment, une fois la mémoire allouée, vous ne pourriez pas y mettre quelque chose. – MickaelFM

+0

MickTaiwan: #include classe my_shared_memory { public: std :: vecteur V; } mem; mem.V.insert (mem.V.begin(), 3); printf ("Valeur% d est à% p, pas dans la mémoire allouée à% p \ n", mem.V [0], & mem.V [0], &mem); – OJW

Répondre

2

Il est trivial d'adapter un linéaire simple sondage table de hachage pour utiliser un bloc de mémoire - vient de mettre sa table (s) au point à la mémoire allouée lors de sa création, et n'implémentez rien pour allouer plus de mémoire pour laisser pousser la table.

+0

J'en ai un (comme vous le dites: assez trivial à créer, surtout si vous n'avez pas besoin de supprimer des éléments) mais en utilisant une bibliothèque correcte pourrait donner de meilleures performances – OJW