前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >5.C++程序设计——动态内存分配

5.C++程序设计——动态内存分配

作者头像
小飞侠xp
发布2021-03-04 10:40:41
3150
发布2021-03-04 10:40:41
举报

用new运算符实现动态内存分配

  • 第一种用法,分配一个变量
    • P = new T;
    • T是任意类型名,P是类型为T *的指针
    • 动态分配出一片大小为sizeof(T)字节的内存空间,并且将该内存空间的起始地址赋值给P
代码语言:javascript
复制
int *pn;
pn = new int;
*pn = 5;
  • 第二种用法,分配一个数组
    • P = new T[N];
    • T:任意类型名
    • P:类型为T *的指针
    • N:要分配的数组元素的个数,可以是整形表达式
    • 动态分配出一片大小为N*sizeof(T)字节的内存空间,并将该内存空间的起始地址赋值给P 动态分配数组实例
代码语言:javascript
复制
int *pn;
int i = 5;
pn = new int[i * 20];
pn[0] = 20;
pn[100] = 30;//虽然编译正确,但运行时会出现数组越界
  • new 运算符的返回值类型
    • new T; new T[n];
    • 这两个表达式返回值的类型都是 T*
    • int *p = new int;
用delete运算符释放动态分配的内存
  • 用“new”动态分配的内存空间,要用“delete”运算符进行释放
    • delete 指针; //该指针必须指向new出来的空间
代码语言:javascript
复制
int *p = new int;
*p = 5;
delete p;
delete p; //导致异常,一片空间不能够被delete多次
用delete运算符释放动态分配的数组
  • 用“delete”释放动态分配的数组,要加“[]”
    • delete [] 指针; //该指针必须指向new出来的数组
代码语言:javascript
复制
int *p = new int[20];
p[0] = 1;
delete [] p;
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 用new运算符实现动态内存分配
    • 用delete运算符释放动态分配的内存
      • 用delete运算符释放动态分配的数组
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档