【发布时间】:2015-10-30 09:05:05
【问题描述】:
我编写了一个简单的程序,试图查看内存的变化,但没有。无论我是否运行代码,总是会出现大约 20% 的水平直线。
#include<iostream>
using namespace std;
int main()
{
int *m;
int i;
cin>>i;
m = new int[i];
}
是否应该为 i 的任何值分配内存?并显示免费内存的变化?
【问题讨论】:
-
你如何衡量内存的变化?而且您知道,一旦您的程序退出,它分配的任何内存都会自动释放?
-
是的,我知道这一点。我写了一个 while(1) 无限循环来检查是否曾经分配过内存,但效果相同。使用系统监视器以及 top 命令我正在测量内存的变化。
-
那么...您为
i输入了什么值?当你说你有 20% 的基线时,那是什么的 20%?您是否尝试过用一些数据填充分配的内存,因为除非您开始写入,否则您的虚拟内存系统可能不需要实际分配空间来分配空间? -
我尝试了从大到大的 i 值。我没有用任何值填充我的数组,因为 new 无论如何都会分配内存。
-
Mos 操作系统在读取或写入内存之前不会实际分配内存。如果将数组中的所有值设置为零,您可能会看到内存使用量增加。
标签: c++ memory-management ram