gpt4 book ai didi

qt - 为什么 QShared Memory 创建大小和返回的大小()不同

转载 作者:行者123 更新时间:2023-12-04 13:32:28 27 4
gpt4 key购买 nike

我对QSharedMemory有疑问

如果我创建一个共享内存并且它的大小小于 4096size() 函数返回 4096。

如果创建的大小大于4096,则返回4096+创建的大小。

例如:

QSharedMemory mem("MyApp");
mem.create(1);
qDebug("Size=%d",mem.size());//4096

QSharedMemory mem("MyApp");
mem.create(4095);
qDebug("Size=%d",mem.size());//4096

QSharedMemory mem("MyApp");
mem.create(4097);
qDebug("Size=%d",mem.size());//8192

如何得到正确的尺寸?

我使用的是 Windows 7 32 位操作系统

最佳答案

QSharedMemory 没有问题。它向您展示了真实的物理内存使用情况,这与我们使用的虚拟内存不同。

在实践中,物理内存粒度是一个页面,它有几个字节。通常为 4096 字节。当您分配一个字节时,它会占用整个物理页面。

当一个进程处理内存时,他正在处理虚拟内存,这提供了强大的工具。例如,虚拟内存管理器可以使用相同的物理页面进行多个单字节分配。但是虚拟内存只与进程范围有关。

这里有几个进程共享的内存,所以它是一个不同的内存模型。 Qt 开发人员刚刚做出设计决策,让框架的用户可以看到这一现实。

关于qt - 为什么 QShared Memory 创建大小和返回的大小()不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29841073/

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