boost :: interprocess, get_free_memory () - PullRequest
0 голосов
/ 02 июля 2019

Я использую Boost :: interprocess для создания разделяемой памяти. Но зарезервированное пространство меньше, чем ожидалось.

// Create new SHM
size_t memSize( vSimpleVtx.size()*sizeof(SimpleVtx)+
                vTriIndices.size()*sizeof(int)+
                vFeatureIndices.size()*sizeof(int)
                );
std::cout<<"D, memSize is "<<memSize<<std::endl;
mgshm=boost::interprocess::managed_shared_memory(boost::interprocess::create_only, shmName,memSize);
std::size_t free_memory = mgshm.get_free_memory();
std::cout<<"Free memory="<<free_memory<<std::endl;

Приведенный выше код печатает:

D, memSize is 624
Free memory=400

Когда я резервирую 674 байта, тогда показывается 450 байтов, поэтому постоянное смещение составляет 224 байта. Где они потерялись?

gcc (Ubuntu 7.4.0-1ubuntu1 ~ 18.04.1) 7.4.0

...