Я просто использую boost :: interprocess :: managed_shared_memory для создания общего вектора в памяти, я успешно создал общую память, я нахожу, когда читаю вектор, нормально читать и напечатайте все элементы в векторе в комментарии 1, но, выходя из области инициализации вектора g/gr, а именно, в основной функции, я больше не могу получить доступ к векторному контенту, программа сообщает ошибку с отображением адреса, но адрес - это то же, так почему? может ли кто-нибудь ответить? Благодаря!Boost :: interprocess managed_shared_memory указатель эффективная область
#include <boost/interprocess/managed_shared_memory.hpp>
#include <boost/interprocess/containers/vector.hpp>
#include <boost/interprocess/allocators/allocator.hpp>
typedef boost::interprocess::allocator<boost::interprocess::vector<int>, boost::interprocess::managed_shared_memory::segment_manager> ShmemAllocator;
typedef boost::interprocess::vector<boost::interprocess::vector<int>, ShmemAllocator> Shmem2DVector;
class TestVector{
public:
Shmem2DVector *g;
Shmem2DVector *gr;
TestVector{
boost::interprocess::managed_shared_memory segment(boost::interprocess::open_only, "shmem");
g = segment.find<Shmem2DVector>("myVector").first;
gr = segment.find<Shmem2DVector>("myVector").first;
//1. print vector g/gr and size of vector g/gr
}
};
int main(){
TestVector test_vec();
//2. print vector g/gr and size of vector g/gr
return 0;
}