收录日期:2019/04/20 16:45:43 时间: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;
}

[转]公司正式宣布创业失败 网页贴纸条怎么制作的 给讲一下如何返回字符串数组 shell调用外部程序如何捕获错误 如何让2.4内核上可配置epson芯片 shell调用外部程序是,如何捕获外部程序的异常错误 求一个正则表达式~~~ winform中listview的问题 急求一个简单的数据库系统,如:学生信息管理系统 关于一款报表开发软件Style Report 请问怎么能设置更多sql server 日志存档 求一个存储过程,请高手来请教,谢谢 最近研究 网络爬虫, 用larbin去爬天涯的论坛帖子,可是爬不下来,只能爬到7个网页 怎么样使用MCI来裁剪MP3?怎么样使用MCI进行格式转换?如果不行,怎么办? 各位帮估个值 有没电信的啊 一口气结了5贴。 怎么改正这种错误啊 计算机工作1年多,迷茫中 delphi tidhttp控件的问题 初学 ant, 部署weblogic 的ear问题 最近很无聊 在线等一句:宏语句 如何用硬盘装系统?麻烦大家教我下下了~~ RegSetValueEx的参数问题 急。急。网页右侧可以上下移动的图片广告条js代码(就是对联广告,我只要右侧的就可以) 今天是失业的第十二天,想了很多,心很乱... VB:如何编写ActiveX.dll并在ASP网页中调用? 附源代码+送分。通过编写自定义控件实例再论Delegate, Event Handling, anonymous method。 iframe Ajax ASP.NET缓存技术