• C plus 内存管理


    int *y = new int; *y = 10;

    或者 int *y = new int (10);

    或者 int *y; y = new int (10);

     

    一维数组: float *x = new float [n];

     

    在Borland C++中,当new 不能分配足够的空间时,它会引发(t h r o w)一个异常xalloc (在except.h 中定义)。可以采用try - catch 结构来捕获(c a t c h)new 所引发的异常:

    float *x;
    try {x = new float [n];}
    catch (xalloc) {

              // 仅当new 失败时才会进入
              cerr << "Out of Memory"  << endl;
              e x i t ( 1 ) ;  //exit () 在stdlib.h 中定义

    }

     

    释放内存:

    delete y;
    delete [ ] x;

     

    如果在编译时至少有一维是未知的,必须在运行时使用操作符n e w来创建该数组;

    char (*c)[5];
    try { c = new char [n][5];}
    catch (xalloc) {

                //仅当n e w失败时才会进入
                 cerr << "Out of Memory"  << endl;
                 exit (1);

    }

    为一个二维数组分配内存空间:

    template <class T>
    bool Make2DArray ( T ** &x, int rows, int cols){
    	// 创建一个二维数组
    	t r y {
    		/ /创建行指针
    		x = new T * [rows];
    		/ /为每一行分配空间
    
    		for (int  i = 0 ; i < rows; i++)
    			{ x[i] = new int [cols];}
    		return true;
    	}
    	catch (xalloc) {return false;}
    }
    
    
    不报错
    

    template <class T>
    void Make2DArray( T ** &x, int rows, int cols){

                 // 创建一个二维数组
                // 不捕获异常
               / /创建行指针
               x = new T * [rows];
               / /为每一行分配空间
               for (int i = 0 ;  i<rows; i++)
                                 x[i] = new int [cols];

    }

    try { Make2DArray (x, r, c);}
    catch (xalloc) {

              cerr<< "Could bot create x" << endl;
              e x i t ( 1 ) ;

    }

    在M a k e 2 D A r r a y中不捕获异常不仅简化了函数的代码设计,而且可以使用户在一个更合适
    的地方捕获异常,以便更好地报告出错误的明确含义或进行错误恢复

     

    释放空间:


  • 相关阅读:
    Java CodeForces 1230A
    基于Lucene的全文检索实践
    错误解决:ElasticSearch SearchResponse的Hits[]总是比totalHits少一条记录
    Java CodeForces 266A
    jQuery 幻灯片插件 OwlCarousel22.3.4 使用
    由于找不到 MSVCP100.dll,无法继续执行代码。重新安装程序可能会解决此问题。
    idea 单行注释,紧跟代码第一列
    TrayPwrD3 电脑一直处于使用独显的状态
    ubuntu20.04 域名解析暂时失败
    jQuery 幻灯片插件 owl_carousev1.31 使用
  • 原文地址:https://www.cnblogs.com/buttonwood/p/2518637.html
Copyright © 2020-2023  润新知