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