关于一个占满内存的问题

sk8873828035 2010-05-14 11:17:29
#include <iostream>
int main()
{
while(1)
{
char *p=new char[100000];
}
return 0;
}

这个我运行了,怎么好像没什么事一样,和预想不一样,预想的是死机了,还害我迟迟不敢运行呢- -
为什么呢?
...全文
151 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
肥嘟嘟肉呼呼 2010-05-17
  • 打赏
  • 举报
回复
我也来试试看下
yangyunzhao 2010-05-17
  • 打赏
  • 举报
回复
100000才多大啊?数据库里面一开缓存就多大啊。

再说,现在早就是虚拟内存了。操作系统不会给你真实的内存,只是你以为是真实内存而已。
CaesireKin 2010-05-17
  • 打赏
  • 举报
回复
楼主……说实话,我运行过比你还要大的数字的……
sk8873828035 2010-05-16
  • 打赏
  • 举报
回复
看来这是一个问题呀,呵呵,。楼上那个佩服我勇气- -
do_fork 2010-05-15
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 brookmill 的回复:]

这种循环我没试过。
以前我试过一次性申请内存,最多可以申请到几个G,多了就是NULL了
[/Quote]

linux下不一定,返回一个正常指针值的时候,也有可能分配失败。
而且现在linux主流是64bit了,地址空间超过1T,不再是几个G了。
brookmill 2010-05-15
  • 打赏
  • 举报
回复
这种循环我没试过。
以前我试过一次性申请内存,最多可以申请到几个G,多了就是NULL了
mstlq 2010-05-14
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 brookmill 的回复:]
这个早有人试过了。以下摘自《高质量C++/C编程指南》

有一个很重要的现象要告诉大家。对于32位以上的应用程序而言,无论怎样使用malloc与new,几乎不可能导致“内存耗尽”。我在Windows 98下用Visual C++编写了测试程序,见示例7-9。这个程序会无休止地运行下去,根本不会终止。因为32位操作系统支持“虚存”,内存用完了,自动用硬盘空间顶替。我只听到硬盘嘎吱嘎吱地响,W……
[/Quote]

这个说法很不靠谱……
前两天我还看过某师弟写的程序,内存泄露过多,运行5分钟后,申请了2G内存没释放,程序崩了……
brookmill 2010-05-14
  • 打赏
  • 举报
回复
刚才忘了贴代码。这是6楼提到的 示例7-9
float *p = NULL;
while(TRUE)
{
p = new float[1000000];
cout << “eat memory” << endl;
if(p==NULL)
exit(1);
}


这种程序不用怕,最多死机而已,重起就没事了。
brookmill 2010-05-14
  • 打赏
  • 举报
回复
这个早有人试过了。以下摘自《高质量C++/C编程指南》

有一个很重要的现象要告诉大家。对于32位以上的应用程序而言,无论怎样使用malloc与new,几乎不可能导致“内存耗尽”。我在Windows 98下用Visual C++编写了测试程序,见示例7-9。这个程序会无休止地运行下去,根本不会终止。因为32位操作系统支持“虚存”,内存用完了,自动用硬盘空间顶替。我只听到硬盘嘎吱嘎吱地响,Window 98已经累得对键盘、鼠标毫无反应。

我可以得出这么一个结论:对于32位以上的应用程序,“内存耗尽”错误处理程序毫无用处。
黑娃 2010-05-14
  • 打赏
  • 举报
回复
听说当分配内存过多时,编译器会自动制止的
ITvsET 2010-05-14
  • 打赏
  • 举报
回复
lz知道分配变量到什么程度才会死机啊
woshiguying 2010-05-14
  • 打赏
  • 举报
回复
我也运行了啊,好像没什么事情啊。
feidaozouren 2010-05-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 mstlq 的回复:]
该不是被编译器优化成什么事情都不干了吧?
[/Quote]有可能。呵呵,反正我是不敢运行的,佩服楼主胆量!
mstlq 2010-05-14
  • 打赏
  • 举报
回复
该不是被编译器优化成什么事情都不干了吧?

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧