Je tente d'utiliser la bibliothèque de mémoire partagée de boost pour effectuer une communication inter-processus (VS 2015). J'ai trouvé un example online ce qui est très utile. Pour l'amour de la santé, je veux juste effectuer une vérification simple que la valeur que j'ai écrite à l'adresse de la mémoire partagée est ce que je voulais. Pour ce faire, je veux imprimer la valeur de la mémoire partagée en utilisant cout. Ceci est le code que j'ai actuellement:Impression de la valeur de l'adresse de la mémoire partagée sur la ligne de commande
#include <boost\interprocess\shared_memory_object.hpp>
#include <boost\interprocess\mapped_region.hpp>
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <cstring>
#include <cstdlib>
#include <string>
int main()
{
using namespace boost::interprocess;
struct shm_remove
{
shm_remove() { shared_memory_object::remove("MySharedMemory"); }
~shm_remove() { shared_memory_object::remove("MySharedMemory"); }
} remover;
//Create a shared memory object
shared_memory_object shm(create_only, "MySharedMemory", read_write);
//Set size to 1
shm.truncate(1);
//Map the whole shared memory in this process
mapped_region region(shm, read_write);
//Write all the memory to 1
std::memset(region.get_address(), 1, region.get_size());
//Check that memory was initialized to 1
char *mem = static_cast<char*>(region.get_address());
for (std::size_t i = 0; i < region.get_size(); ++i)
{
std::cout << "Memory value: " << *mem << "\n";
if (*mem++ != 1)
{
return 1; //Error checking memory
}
}
std::cout << "press any key to quit";
_getch();
}
Le code fonctionne bien, pas d'erreurs sont jetés quand il vérifie que la mémoire mappée a été mis à 1. Toutefois, lorsque je tente d'imprimer ce que je pense devrait être la valeur à l'adresse, je reçois un visage souriant ...
quelqu'un peut-il me diriger dans la bonne direction? J'ai quelques soupçons (pas de fin \ 0?) Mais je ne comprends vraiment pas le fonctionnement interne ici. Toute aide est appréciée!
Essayez 'std :: cout <<" Valeur mémoire: "<< (int) * mem <<" \ n ";' –
parfait merci! – willpower2727