小龙说:
       在平静的日子里,要学会自我沉淀,也要闪闪发光。

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

(1)第一种用法,分配一个变量:

P = new T;

T是任意类型名,P是类型为 T* 的指针。
动态分配出一片大小为sizeof(T)字节的内存空间,并且将该内存空间的起始地址赋值给P。比如:

int *pn;
pn = new int;
*pn = 5;

(2)第二种用法,分配一个数组:

P = new T[N];

T:任意类型名
P:类型为 T* 的指针
N:要分配的数组元素的个数,可以是整形表达式
动态分配出一片大小为 N*sizeof(T)字节的内存空间,并且将该内存空间的起始地址赋值给P。

  • 动态分配数组示例:
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出来的空间

int *p = new int;
*p = 5;
delete p;
delete p;   //导致异常,一片空间不能被delete多次

三、用delete运算符释放动态分配的数组

用“delete”释放动态分配的数组,要加“[]”
delete [] 指针://该指针必须指向new出来的数组

int *p = new int[20];
p[0] = 1;
delete []p;

本文内容为慕课笔记:
中国大学慕课北京大学郭炜老师所讲的C++面向对象程序设计

如有错误或者不足之处,欢迎大家留言指正!

C++编程语言——动态内存分配相关推荐

  1. C语言中动态内存分配的本质是什么?

    摘要:C语言中比较重要的就是指针,它可以用来链表操作,谈到链表,很多时候为此分配内存采用动态分配而不是静态分配. 本文分享自华为云社区<[云驻共创]C语言中动态内存分配的本质>,作者: G ...

  2. 对于动态“内存”分配,Have you explored?(C语言)

    对于我们学习一门计算机编程语言,"内存"是我们永远绕不开的一个词.对于初始C语言的小伙伴来说:我们只要知道内存被分为栈区,堆区,静态区即可. 1.栈区:主要是用来存放"局 ...

  3. C语言动态内存分配详解

    文章目录 前言 一.为什么存在动态内存分配 1.已掌握的内存开辟方式 2.上述开辟空间方式的特点 3.为什么存在动态内存分配 二.动态内存函数的介绍 1.malloc 2.free 3.calloc ...

  4. 释放变量所指向的内存_C++动态内存分配(学习笔记:第6章 15)

    动态内存分配[1] 动态申请内存操作符 new new 类型名T(初始化参数列表) 功能: 在程序执行期间,申请用于存放T类型对象的内存空间,并依初值列表赋以初值. 结果值: 成功:T类型的指针,指向 ...

  5. 动态内存分配与柔性数组

    什么时动态内存分配 一般我们写程序都是在栈区分配空间,如果我们想根据需求想随时存放随时释放数据,堆区可以实现根据需求想系统申请所需大小的空间. 建立内存的动态分配 内存的动态分配是通过系统提供的函数来 ...

  6. C++中的动态内存分配

    1.Cpp中的内存分配 了解动态内存在C++中是如何工作的是成为一名合格的C++程序员必不可少的.C++程序中的内存分为两个部分: 栈:在函数内部声明的所有变量都将占用栈内存. 堆:这是程序中未使用的 ...

  7. 【 C 】动态内存分配实用案例(二)之复制字符串

    用动态分配内存制作一个字符串的一份拷贝.注意:调用程序应该负责检查这块内存是否分配成功,这样做允许程序以任何它所希望的方式对错误作出反应. #nclude <stdlib.h> #incl ...

  8. 【 C 】动态内存分配实用案例(一)之读取、排序和打印一列整形值

    什么时候用动态内存分配呢?下面这个案例给出了一个比较实用且精彩地使用动态内存的场合,并且教你如何合理地使用动态内存分配? 动态内存分配一个常见的用途就是为那些长度在运行时才知的数组分配内存空间. 下面 ...

  9. 【 C 】动态内存分配案例分析

    声明一个指向char类型的指针,可以在声明的时候就对其进行初始化,这样是合理的. 例如: E1: #include <stdio.h> #include <stdlib.h> ...

最新文章

  1. os.clock()导致的bug
  2. Nessus 4.4 windows and linux 安装手册
  3. RTX 30系游戏本来了!1月26日开售,售价999美元起
  4. highcharts图表高级入门之polar:极地图的基本配置以及一些关键配置说明
  5. javascript 传多个参数的正则表达式(用来获取某个参数值)
  6. React setStats数组不更新,百思不得其解。
  7. 压测学习总结(6)——Jmeter同步定时器的使用
  8. Delphi 中的 XMLDocument 类详解(13) - 关于 XML 属性
  9. python装饰器函数执行后日志_python 某一函数上面有多个装饰器
  10. scrum 11.27
  11. c#高级编程第11版 pdf网盘_C#高级编程第11版 - 概述
  12. android 谷歌地图离线访问,Android版谷歌地图更新 新增离线浏览功能(图)
  13. 舆情监测系统哪家好?
  14. java服务端集成腾讯IM 腾讯云通讯生成usersig的方法
  15. word中插入一页横向页面
  16. Linux系统备份工具 REAR (RELAX-AND-RECOVER)
  17. 索尼展示基于MicroLED技术的16K显示屏:约780吋
  18. 北京大学开设电子游戏选修课,火“爆”到没地方坐
  19. Android 系统广播(大全)
  20. PAP认证、CHAP认证

热门文章

  1. Linux下I2C驱动框架全面解析
  2. Hive笔记-By Layne
  3. 解决跨域问题(详解9种方法)
  4. 连接腾讯云服务器操作+SCP上传文件
  5. 计算机网络—网络原理之<TCP/IP 五层协议 >图解+详述
  6. 来说说电脑上USB图标的意义
  7. 计算机没有显示在桌面,显示器桌面没有图标怎么回事
  8. NameNode和SecondaryNameNode详解
  9. win10系统如何解决管理员已阻止你运行此应用
  10. java程序员推荐轻薄笔记本,移动架构师成长路线