关于set_new_handler的一些残存疑问

来源:互联网 发布:贵州大数据局局长 编辑:程序博客网 时间:2024/05/02 01:06

以下是本人写的一段代码:

#include<stdlib.h>
#include<new.h>
#include<iostream.h>
 int count=0;
 void outofmemory()
 {  
  cerr<<"内存不足在您创建第"<<count<<"个对象的时候"<<endl;
  exit(1);
 }
class Counted
{
private:
 int  id;
public:

 Counted():id(count++) {  
  
  cout<<"it's being created"<<endl;;
  cout<<"id="<<id<<"   count="<<count<<endl;
 }
    ~Counted()
 {
  count--;
  cout<<"it is being destroyed"<<endl;
     cout<<"id="<<id<<"   count="<<count<<endl;

 }
 
};
int main()
{   set_new_handler(outofmemory);
 Counted* c1=new Counted();
 delete c1;
 Counted* c2=new Counted[10];
 delete[] c2;
 
 while(1)
 
    new  Counted;
}

 


 在mingyw下编译并通过,但出现的问题如图所示:

内存的大小没有发生变化,而cpu的使用率却为100%;

如果去掉构造函数的打印语句:cout<<"it's being created"<<endl;;
  cout<<"id="<<id<<"   count="<<count<<endl;就会使内存使用率变大而cpu使用率不发生显著的变化;

请阅读的同志们思考思考:这是怎么回事??? 

原创粉丝点击