首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

为何new了这么多,只占这么点内存

2012-09-06 
为什么new了这么多,只占这么点内存C/C++ codeint i1024*1024*1024char *cnew char[i]为什么只占800多K

为什么new了这么多,只占这么点内存

C/C++ code
int i=1024*1024*1024;char *c=new char[i];

为什么只占800多K内存

[解决办法]
你memset下。。
因为你没使用这些内存,所以只是让你占个位置。。没拉出屎的话,不给冲水的。
[解决办法]
你怎么查看出是800多K的
[解决办法]
还有这种事啊?
跟编译选项有关吗
我的怎么占用空间了.
探讨

你memset下。。
因为你没使用这些内存,所以只是让你占个位置。。没拉出屎的话,不给冲水的。

[解决办法]
探讨
你怎么查看出是800多K的

[解决办法]
你的i能被这么大的值赋值吗?
[解决办法]
探讨

你怎么查看出是800多K的

[解决办法]
申请这么多内存干嘛?搞机器么?哈哈
[解决办法]
探讨

你的i能被这么大的值赋值吗?

[解决办法]
有和new的底层实现有关。

有的系统api可以提交内存并且锁定在内存,不让换页出去的。
[解决办法]
你是如何看的?
[解决办法]
差不多1G了
[解决办法]
探讨
引用:

你是如何看的?

用金山卫士看的...

[解决办法]
探讨
引用:

你是如何看的?

用金山卫士看的...

[解决办法]
貌似M$Win下, 大内存请求是个mmap, 要等你真正访问了,在缺页时才会真正的占用内存...

[解决办法]
你申请个 new char[1024];然后再看下呢
[解决办法]
你拿系统带的 任务管理器 查看下这个进程占用的内存就好啦
[解决办法]
1楼和15楼是明白人,其他的不用看
[解决办法]
金山卫士有这功能。。
[解决办法]
new 的内存是立即申请的, 和用不用 memset 无关.
你的程序是不是没有其它代码了, 而且用 Debug 菜单下的 Run 来执行的? 你的问题应该是你申请完内存马上程序就退出了, 所以你看不到运行过程中占用的内存.
你在程序后面加一句 system("pause"); 然后暂停的时候看内存, 就会发现占用的 1G 多, 按任意键再看内存, 降到 800 多 K.

[解决办法]
有可能申请失败要判断下
if(c!=NULL)

热点排行