当无法预先确定空间大小,或者空间太大(栈上无法分配),需要用动态分配. ,动态分配需要自己释放空间,所以小的对象,不用动态分配.,C语言中一般用malloc函数分配内存,然后用free函数释放。
函数malloc 的原型如下:
void * malloc(size_t size);
用malloc 申请一块长度为length 的整数类型的内存,程序如下:
int *p = (int *) malloc(sizeof(int) * length);
我们应当把注意力集中在两个要素上:“类型转换”和“sizeof”。
下例是一个二维数组内存的动态分配:
double **F;//F为一个n行3列的二维矩阵
F=(double**)malloc(n*sizeof(double*));
for(long r3=0; r3<n; r3++)
{
F[r3]=(double*)malloc(3*sizeof(double));
}
free(F);//释放分配的内存
C++中提供了简便而功能较强的运算符new和delete
double **x;//x为n行3列的矩阵
x=new double*[n]; //为x动态分配内存
for(i=0;i<n;i++)
{
x[i]=new double[3];
}
//分配了内存肯定要释放
for(long j=0;j<n;j++)
{
delete [] x[j];
}
delete [] x;