利用new定义二维数组,delete删除内存空间

本文详细介绍了如何在C++中使用动态内存分配创建和管理二维数组,包括开辟空间、赋值、释放空间等关键步骤,并通过多个示例加深理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//为二维数组开辟空间 
 int **p = new int*[num1];
 for(int i=0; i <num1; ++i)
 p[i] = new int[num2];
 
 
 //释放二维数组占用的空间
 for(int m=0;m <num1;m++)
 delete[] p[m];
 delete[] p;
 注意以下几个等价式:
 int **c; 
c = new int*[3]; 
for( i=0;i <4;i++) 
{ 
c[i] = new int[3]; 
} //c[5][3] 
 
 和下面等价用法: 
 int **c; 
 c = (int **)new int[2];//c = (int **)new int[2]; 
 
 和下面等价用法: 
 int (*c)[3]=new int[2][3]; //int** c=(int**) new int[2][3]; 

再给几个例子:

例子1:
char (*p)[25]; //指定指向特定数组的指针,忽略掉第一维,为什么?自己想
p=new char[19][25];
p[3][9]=20;
delete[] p;

例子2:
char *p; //指定普通指针
p=(char *)new char[19][25]; //强制转换
*(p+9)=20;
delete[] p;

例子3:
const int i=30;
const int j=20;
char (*p)[i];
p=new char[j][i];

例子4:
int main(int argc, char* argv[])
{
int row,col,k=1;
cout<<"Please input row and col:"<<endl;
cin>>row>>col;

//分配空间
int **p=new int*[row];//先建立一个指针数组,再用一个for循环开辟对应的指针数组
for (int i=0;i<row;i++)
{
p[i]=new int[col];
}//空间分配完毕

for (int m=0;m<row;m++)
{
for (int n=0;n<col;n++)
{
p[m][n]=k++;
cout<<setw(4)<<p[m][n]<<" ";
}
cout<<endl;
}

//释放空间
for (int j=0;j<row;j++)
delete []p[j];
delete []p;
p=0;

return 0;
}

例子4:


const int row=4;
const int col=3;

int **VerProject= new int*[row];
for (int j=0;j<row;j++)
{
VerProject[j]=new int[col];
}
for (int i=0;i<row;i++)
for(int j=0;j<col;j++)
{
VerProject[i][j]=i;
printf("i=%d,j=%d,%d\n\n",i,j,VerProject[i][j]);
}
for (int i=0;i<row;i++)
{
delete []VerProject[i];
}
delete []VerProject;
VerProject=0;
if (VerProject==NULL)
{
cout<<"内存释放完毕!"<<endl;
}
 
应用实例:
Xingchuang Project中画页、画图部分
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值