Я использую 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