收录日期:2019/06/26 10:33:36 时间:2016/06/01 15:43:51 标签:C++ 语言
我在看Think in C++中,关于取得new_handler的处理的问题,不过我用VC6.0
编译后执行就出错,代码如下:高手帮看看,谢谢!

#include<iostream.h>
#include<stdlib.h>
#include <new.h>

void f()
{
cerr << "没有内存了!" << endl;
exit(1);
}

main() 

set_new_handler(f);
int i = 0;
while(1)
{
cout << i++ << endl;
new int[1000];
}
return 0;
}
出错在set_new_handler(f);这句话,不知道为什么
改了一下在gcc上面编译通过,运行也正确。

#include<iostream>
//#include<stdlib.h>
#include <new>
using namespace std;
void f()
{
cerr << "没有内存了!" <<endl;
exit(1);
}

main() 

set_new_handler(f);
int i = 0;
while(1)
{
cout << i++ << endl;
new int[1000000];
}
return 0;
}

数改成1000000了,否则半天没耗尽内存。
为什么在VC6下面却执行不了呢?
头文件的关系吧,程序本身没有问题。
也可能是vc6的编译器版本太旧。
和编译器有关,那我换个编译器试试
VC6对标准C++的支持不是很好.  
修改代码如下:
#include<iostream>
#include<stdlib.h>
#include <new>

using namespace std;
void f()
{
std::cerr << "没有内存了!" << std::endl;
exit(1);
}

main() 

set_new_handler(f);
int i = 0;
while(1)
{
cout << i++ << endl;
new int[1000000];
}
return 0;
}

dev C++ 工作正常编译并运行!
//没什么问题了
#include<cstdlib>
#include <new>

void f()
{
std::cerr << "没有内存了!" << std::endl;
exit(1);
}

int main() 

std::set_new_handler(f);
int i = 0;
while(1)
{
std::cout << i++ << std::endl;
new int[1000000];
}
return 0;
}

请教!!!!javascript中如何给表单名为变量的表单赋值 Cisco路由模拟器-学习CISCO路由器的好帮手 图片显示问题 高分求救,J2ME在Nokia6280下显示/r/n变成了… 实现像163那样的鼠标延迟感应特性,请教不用层,用table能怎么实现,js高手来拿分吧? ainote,记录笔记的小软件,很好用 工作越来越没劲了,郁闷散分 ASP.NET 2.0 成员资格站点的问题 页面为什么不触发事件 求版主(查询问题),马上结帖 MTK中如何调整HIGHTLIGHT的高度啊 怎样使用用户自定义控件(急!!!) 如何设置打印机走纸高度 我有个汇编程序,请高手们帮我改一下,谢谢啊 vc,模式子对话框关闭时,主对话框也随之关闭,怎样才能不使它关闭, 有没有关于驱动摄像头控件ezVidC60.ocx的一些想关说明和使用方法??? list中map对象的取值 显示层的问题 怎样使Graphics对象在特定位置显示,在线等 如何知道当前选中的是列表框的第几项 进程控制问题,求达人指教 日期字符串问题 请问这里有没有天津的兄弟啊? 一条SQL语句长度超过8000字符怎么办? 怎样使用Web.config定义的网页的标题(急急急) php如何向mysql数据库自动写入数据 急求查询语名SELECT 大家收到这封邮件了么???? GridView中的排序问题 正则表达是怎么跳过前几个字符而判断后面的部分