Je tente de créer une mémoire tampon circulaire dans la mémoire partagée à l'aide des bibliothèques Boost circular_buffer
et Interprocess. J'ai compilé et exécuté l'exemple donné dans le Interprocess documentation pour créer un vecteur dans la mémoire partagée sans problème. Cependant, quand je le modifier pour utiliser le Boost circular_buffer comme:Problème lors de la création d'une mémoire tampon circulaire dans la mémoire partagée à l'aide de Boost
int main(int argc, char *argv[])
{
managed_shared_memory segment(create_only, "MySharedMemory", 65536);
const ShmemAllocator alloc_inst (segment.get_segment_manager());
MyCircBuffer *myCircBuf = segment.construct<MyCircBuffer>("MyCircBuffer")(alloc_inst);
return 0;
}
Je reçois une erreur de compilation (provoquée par segment.construct()
). Une idée de ce que je fais mal? Est-ce parce que circular_buffer
n'est pas l'un des conteneurs répertoriés dans /boost/interprocess/containers
, c'est-à-dire qu'il n'est pas compatible avec Interprocess?
Merci,
C
pouvez-vous fournir le message d'erreur de compilation? –
Veuillez publier la liste des erreurs et le compilateur ... – rlbond
Désolé de ne pas donner tous les détails. L'erreur que j'obtiens est /usr/local/include/boost/circular_buffer/base.hpp:2127: erreur: impossible de convertir 'boost :: interprocess :: offset_ptr' en 'void *' pour l'argument '1' à 'void * memset (void *, int, size_t) ' J'utilise gcc v4.2.1 sur MAc OS X –
recipriversexclusion