内存分配期间内存页面是否破碎?

时间:2016-12-06 10:46:44

标签: c++ linux memory memory-management

我目前的情况如下:我正在用t分配malloc(t)个字节,然后用数据填充这个内存(只是为了强制从虚拟内存映射到物理内存)。内存页面大小为4kB。

鉴于这种情况,我有以下问题:

1。)这使用了多少物理内存(我看到以下选项):

  • 完全t字节没有浪费的内存(甚至不是部分内存页面)
  • t B +最多4kB(废物的一个记忆页面可以在同一过程中使用)。
  • t B +最多4kB(分配存在时不能使用一个内存页面)
  • 由于映射技术(一些2魔法或页面块的力量......其他原因)可能会超过一页浪费

2。)这个连续的虚拟内存(一个分配)是否也会被映射到连续的物理内存?

3.)如果有浪费,我可以测量应用程序的确切内存占用量吗?最好是从C ++里面。

我应该注意,目前我的代码在ubuntu linux机器上运行,但对其他系统的见解仍然是受欢迎的。

1 个答案:

答案 0 :(得分:1)

    • 首先,内存分配始终四舍五入(向上)到页面大小。
    • 我不明白你说了什么"虽然分配存在" ...
    • 虽然它可能会导致很多问题,但是进程中每个具有指向已分配内存的指针的线程都可以访问它(因此您需要同步这些线程等。
  1. 你已经有了答案。
  2. 您可以使用mmap