实验题——解答

/*! @file
********************************************************************************
<PRE>
文件名       : Counted.h
文件实现功能 :   构造函数输出id值并且输出“it’s being created”;
       析构函数也输出id值并且输出“it is being destroyed”;
       使用new创建一个class Counted的对象,并且用delete销毁它;
       使用new创建一个class Counted的对象数组,并且用delete[]销毁它;
       使内存耗尽,使得在使用new运算符时无法分配内存,并输出提示信息“Out of memory”。
作者         : 2007303138
版本         : 1.0.0
</PRE>
*******************************************************************************/
#ifndef COUNTED_H
#define COUNTED_H
#include <iostream>
using namespace std;

class Counted
{
private:
  static int count;
  int id;

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

int Counted::count = 0;
#endif//COUNTED_H

/****************************************************************************/

//以上是count.h

 

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

//构建结构体,使内存耗尽,
struct Big
{
    double stuff[20000];
};

int main()
{
 //使用new创建一个class Counted的对象,并且用delete销毁它;
 Counted *cnum = new Counted();
 delete cnum;
 
 //使用new创建一个class Counted的对象数组,并且用delete[]销毁它;
 Counted *carray = new Counted[10];
 delete[] carray;

 //想办法将内存耗尽,使得在使用new运算符时无法分配内存,并输出提示信息“Out of memory”。
 Big * pb;
 try
 {
  pb = new Big[10000000];
 }
 catch (bad_alloc & ba)
 {
  cout << "Out of memory"<<endl;
  exit(EXIT_FAILURE);
 }

 return 0;
}

//

//以上是main.h

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值