boost::interprocess::shared_memory_object::truncate

shared_memory的truncate作用是什么?

注释:Sets the size of the shared memory mapping.

1.当一个共享内存对象被创建了,它的大小是0。为了设置共享内存的大小,使用者需在一个已经以读写方式打开的共享内存中调用truncate 函数:shm_obj.truncate(10000);

所以当创建共享内存时:m_object = boost::interprocess::shared_memory_object(open_or_create,sname,read_write);

此时大小是0,使用时,需要初始化内存:m_object.truncate(1024);

https://www.boost.org/doc/libs/1_49_0/doc/html/boost/interprocess/shared_memory_object.html

 

2.当共享内存已经创建过,并没主动销毁,它的大小可能不为0,此时 m_object.truncate(1024);是没有作用的,那块已经被使用过的内容也不会被初始化。

原文地址:https://www.cnblogs.com/workharder/p/14537513.html