CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  新手乐园

EffectiveC++上的一段代码,VC6上运行出错,请使用其他编译器的朋友帮助运行一下。

楼主A_B_C_ABC(黄瓜@YouCanDoIt)2006-02-02 21:22:12 在 C/C++ / 新手乐园 提问

#include   <new>  
  //#include   <string>  
  #include   <iostream>  
  using   namespace   std;  
   
  class   x    
  {  
  public:  
  static   new_handler   Set_new_handler(new_handler   p);  
  static   void   *   operator   new(size_t   size);  
   
  private:  
  static   new_handler   currenthandler;  
  };  
  new_handler   x::currenthandler; //缺省设置currenthandler为0(即null)  
   
   
  new_handler   x::Set_new_handler(new_handler   p)  
  {  
  new_handler   oldhandler   =   currenthandler;  
  currenthandler   =   p;  
  return   oldhandler;  
  }  
   
   
  void   *   x::operator   new(size_t   size)  
  {  
  cout<<"Test   Information."<<endl;  
  new_handler   globalhandler   = //   安装x的new_handler          
  /*std::*/set_new_handler(currenthandler);  
   
          void   *memory;  
   
  try   {   //   尝试分配内存  
  memory   =   ::operator   new(size);  
  }  
   
  catch   (std::bad_alloc&)   {   //   恢复旧的new_handler  
  /*std::*/set_new_handler(globalhandler);              
  throw; //   抛出异常  
  }  
  /*std::*/set_new_handler(globalhandler); //   恢复旧的new_handler  
  return   memory;  
  }  
   
   
  void   nomorememory(void);//   x的对象分配内存失败时调用的new_handler函数的声明  
  void   main()  
  {  
   
  x::Set_new_handler(nomorememory);//   把nomorememory设置为x的  
  //   new-handling函数  
  x   *px1   =   new   x; //   如内存分配失败,  
  //   调用nomorememory  
  //string   *ps   =   new   string; //   如内存分配失败,调用全局new-handling函数  
   
  // x::Set_new_handler(0); //   设x的new-handling函数为空  
   
  // x   *px2   =   new   x; //   如内存分配失败,立即抛出异常  
  //   (类x没有new-handling函数)  
  }  
   
  void   nomorememory()  
  {  
  cerr<<"nomorememory"<<endl;  
  } 问题点数:20、回复次数:3Top

1 楼ma100()回复于 2006-02-02 22:24:14 得分 7

vc8   输出  
   
  Test   InformationTop

2 楼inutility(埋没)回复于 2006-02-03 13:44:02 得分 6

_set_new_handlerTop

3 楼Cantonese00((⊙_⊙))回复于 2006-02-03 14:01:40 得分 7

dev-c++下通过编译...  
  无返回啥信息Top

相关问题

  • vc++编译器的问题
  • VC编译器的问题
  • VC++6.0编译器问题.......
  • vc编译器死机
  • VC编译器的提问
  • 二次求救,编译器出错了?
  • vc编译器,每次都把所有文件都编一遍,是哪里出错了?
  • VC的编译器是哪个啊?
  • 关于VC编译器的问题~~~
  • VC编译器有问题吗?

关键词

  • currenthandler
  • 运行
  • handler
  • oldhandler
  • operator
  • size
  • static
  • include
  • set

得分解答快速导航

  • 帖主:A_B_C_ABC
  • ma100
  • inutility
  • Cantonese00

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo