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中不捕获异常不仅简化了函数的代码设计,而且可以使用户在一个更合适
的地方捕获异常,以便更好地报告出错误的明确含义或进行错误恢复

 

释放空间:

C plus 内存管理

原文链接: https://www.cnblogs.com/buttonwood/archive/2012/05/25/2518637.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    C plus 内存管理

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/51144

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月9日 上午2:40
下一篇 2023年2月9日 上午2:42

相关推荐