gpt4 book ai didi

c++ - 是否可以将 std::vector 放置到共享内存中?

转载 作者:IT老高 更新时间:2023-10-28 22:28:30 26 4
gpt4 key购买 nike

我会使用 CreateFileMapping() windows API 函数在共享内存中创建 std::vector。我知道如何创建共享内存并对其进行管理,但是如何将 std::vector 放置到内存中的固定地址?在我的情况下,我不能使用 boost 或其他库,我使用的是 CBuilder++ 2010。我认为可能使用的一种变体

std::vector<int> myVec; 
myVec *mv;
mv = shared_memory_addr ?

但是我如何检测 vector 的实际大小以调整内存大小?

最佳答案

我会使用 Boost.Interprocess,它解释了如何做到这一点: http://www.boost.org/doc/libs/1_38_0/doc/html/interprocess/quick_guide.html#interprocess.quick_guide.qg_interprocess_container

请注意,这不使用 std::vector<> ,它不适合共享内存使用,因为它通常是根据三个指针(开始、结束、容量或某些等价物)实现的,并且地址在进程之间会有所不同。所以 Boost.Interprocess 有它自己的 vector 类,它是专门为你想要做的事情而构建的。

关于c++ - 是否可以将 std::vector 放置到共享内存中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5363602/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com