动态内存创建和释放(c++)

总结一一下动态内存的笔记:

为什么要用动态内存?

1、有时候创建的变量是无法在写程序时得知的,需要根据不同的输入情况开辟空间,由此引入大小可以灵活变化的动态内存。

2、直接创建的变量是放在栈中的,而动态内存是放在堆中的。直接创建变量是连续的,课存放空间小;动态内存创建的变量逻辑上连续,空间上不连续,可存放空间大。

3、直接创建的变量可以自动释放内存空间,但是动态内存需要主动释放。

动态内存的建立和释放:

Type* name=new Type;
//单个变量的建立
delete name


Type* name=new Type[n];
//建立一个有n个Type数据类型空间大小的数组,name代表数组首元素地址,通过*(name+i)访问元素
delete[] name;
//[]代表从第一个变量开始释放


Type** name=new Type*[n];
for (int i = 0; i < n; i++)
	name[i] = new int[m];
//先建立一个指针数组,其中的每个变量都是一个指针,然后在将每一个指针都动态分配一个数组,
指针作为数组首元素的地址,整个二维数组的大小为n*m
for (int i = 0; i < n; i++)
    delete[] name[i];
delete[] name;
//二维的数组先将建立的n个数组释放,再释放由n个地址组成的数组

行指针的动态分配二维数组:

int main()
{
int (*p)[20];//先创建一个指向大小为20的int数组的指针
int n;
cin>>n;//输入n;
p=new int[n][20];//分配空间

for(int i=0;i<n;i++)
    for(int j=0;j<20;j++)
        cin>>p[i][j];
//输入

delete[] p
//虽然是二维数组,但本质上只建立了一次动态数组,所以只用释放一次内存
}

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值