请高手指教一个关于用完内存的问题

catxl313 2003-10-08 10:50:56
#include<iostream.h>
#include<stdlib.h>
#include<new.h>
void out_of_memory(){
cerr<<"memory exhuasted!"<<endl;
exit(1);
}
main(){
set_new_handler(out_of_memory);
while(1)
new int[1000];
}
...全文
52 32 打赏 收藏 转发到动态 举报
写回复
用AI写文章
32 条回复
切换为时间正序
请发表友善的回复…
发表回复
catxl313 2004-01-01
  • 打赏
  • 举报
回复
不好意思,我不知道如何给更多的分,因为系统老是说我给的分超过了问题点数。
catxl313 2003-12-06
  • 打赏
  • 举报
回复
那如果用完了还不够, 还能再申请到内存(或虚拟内存)空间吗?
aojunpeng313001 2003-12-05
  • 打赏
  • 举报
回复
能!就一个字
catxl313 2003-12-05
  • 打赏
  • 举报
回复
到顶虚拟内存能用完吗?
ddddh 2003-12-02
  • 打赏
  • 举报
回复
楼上的,跟硬盘多大没太大关系

每个进程的虚拟空间是有范围的

:-)
Darkay_Lee 2003-12-02
  • 打赏
  • 举报
回复
谁说的虚拟内存用不完的!你有多大的硬盘啊,100000000000T?我分配个7,7 49天,每次要1M,看你完不完。说话严谨一点嘛!
MadLee 2003-12-02
  • 打赏
  • 举报
回复
因为有人没学好操作系统,却喜欢不懂装懂

#include "stdafx.h"
#include<iostream>
#include<new>
using namespace std;

void out_of_memory()
{
  cerr<<"memory exhuasted!"<<endl;
  system("winmine.exe");
  exit(1);
}
int main()
{
  set_new_handler(out_of_memory);
  for(;;)
    new int[1000000000];
}

很快就出现memory exhuasted。

出现Assertion failed是因为你没把
#define new DEBUG_NEW
三句删掉,所以你调用的new不是真正的new,而是m$自己定义的DEBUG_NEW
waterflier 2003-12-01
  • 打赏
  • 举报
回复
对机器的虐待!一般用户等不到虚拟内存用完的
ddddh 2003-12-01
  • 打赏
  • 举报
回复
用不完?

好夸张……
catxl313 2003-11-29
  • 打赏
  • 举报
回复
怎么说法不一阿?
Jinhao 2003-11-28
  • 打赏
  • 举报
回复
int main()
{
  char *a;
  try{
  while(a=new char[1024*1024]);
  }
  catch(bad_alloc)
  {
  cout<<"bad alloc"<<endl;
  }
  while(1); //死循环,防止程序退出
}
xiaoyunet 2003-11-28
  • 打赏
  • 举报
回复
关了虚拟内存在测试嘛。难道你不会关?
MadLee 2003-11-28
  • 打赏
  • 举报
回复
虚拟内存当然也会用完,32位系统的虚拟内存最大是4G。
EternalBlue 2003-11-26
  • 打赏
  • 举报
回复
虚拟内存是用不完的,当新的内容要写入虚拟内存时,如果虚拟内存已满,那么系统会根据一定的算法把部分旧的内容替换掉,所以你的硬盘会狂转
catxl313 2003-11-26
  • 打赏
  • 举报
回复
哦,原来如此,我还没有学过操作系统呢,谢谢各位指点!

如果我们定义了虚拟内存的大小,还用不完吗?
xujunfeng008 2003-11-26
  • 打赏
  • 举报
回复
new int[1000];
对于编译器来讲,这条语句会被自行优化而删掉,因为对程序没有任何作用,所以不会有其他问题
shenyiwen 2003-11-26
  • 打赏
  • 举报
回复
一次分配一小块的确不太容易用完.
但一次分配很大的内存new就有可能失败.
erigido 2003-11-26
  • 打赏
  • 举报
回复
很慢很慢~~~
jeckyz 2003-11-25
  • 打赏
  • 举报
回复
windows下内存也是可能用完的,一个进程有2GB左右的可用空间,内存不够也确实会用虚拟内存,因此系统频繁地进行换页操作,所以硬盘在疯狂地转,整个系统不比蜗牛还慢。楼主就开着你这个进程试试,半小时候看看能不能用完,我等就没兴趣试了,呵呵...
hjf1010 2003-11-25
  • 打赏
  • 举报
回复
各位,操作系统是怎么学的。再windows下内存使用不完的,我试过,比拟的程序还‘狠‘,还是没把内存吃完,只听见硬盘拼了名的转,机子慢得要死,可还是没有提示内存用完
加载更多回复(12)

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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