доступ к значениям std :: vector в shared_memory с использованием круглых скобок [] - PullRequest
1 голос
/ 18 марта 2011

Я создаю вектор в разделяемой памяти, используя шаблон Boost shared_memory_manager:

using namespace boost::interprocess;

typedef allocator<nIcon*, managed_shared_memory::segment_manager>  ShmemAllocator;


typedef std::vector<nIcon*, ShmemAllocator> icons_v;
if(already_running) 
{

  managed_shared_memory segment(create_only, "MySharedMemory", 65536);
  const ShmemAllocator alloc_inst (segment.get_segment_manager());
  icons = segment.construct<icons_v>("icons_v")(alloc_inst);
} else {
  managed_shared_memory segment(open_only, "MySharedMemory");
  icons = segment.find<icons_v>("MyVector").first;
}

Теперь, чтобы получить доступ к вектору, я не могу использовать скобки standart [], потому что компилятор говорит, что использует.или -> это ошибка.Как получить доступ к векторным элементам?

1 Ответ

1 голос
/ 18 марта 2011

Обычно вы не должны смешивать контейнеры и разделяемую память. Это может быть очень опасно, если процессы, созданные с использованием двух разных реализаций контейнера, пытаются работать друг с другом.

Обычно вы должны выбирать только нативные типы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...