动态分配内存空间
new和delete运算符是用于动态分配和撤销内存的运算符。
new
1.开辟单变量地址空间
一般使用格式: 格式1:指针变量名=new 类型标识符; 格式2:指针变量名=new 类型标识符(初始值); 格式3:指针变量名=new 类型标识符 [内存单元个数];
说明:格式1和格式2都是申请分配某一数据类型所占字节数的内存空间;但是格式2在内存分配成功后,同时将一初值存放到该内存单元中;而格式3可同时分配若干个内存单元,相当于形成一个动态数组。例如:
new int; //开辟一个存放整数的存储空间,返回一个指向该存储空间的地址。
int *p1 = new int //即为将一个int类型的地址赋值给整型指针p
int *p2 = new int(5) //作用同上,但是同时将整数空间赋值为5
2.开辟数组空间
对于数组进行动态分配的格式为:
指针变量名=new 类型名[下标表达式];
int *arr1 = new int[5];
int (*arr2)[4] = new int[3][4];请注意[ ]不必是常量表达式,即它的值不必在编译时确定,可以在运行时确定。
delete
1.删除单变量地址空间
int *p = new int;
delete p; //释放单个int的空间
2.删除数组空间
int *p = new int[5];
delete []p; //释放int数组空间两式中的方括号是非常重要的,两者必须配对使用,如果delete语句中少了方括号,因编译器认为该指针是指向数组第一个元素的指针,会产生回收不彻底的问题(只回收了第一个元素所占空间),加了方括号后就转化为指向数组的指针,回收整个数组。
delete []的方括号中不需要填数组元素数,系统自知。即使写了,编译器也忽略。

C++动态分配内存空间相关推荐

  1. 堆栈与动态分配内存空间

    在开发过程中,我们往往是没办法一开始就决定好存储空间的,除非把存储空间开辟得足够大,但这不切实际.所以我们经常会遇到需要动态分配存储空间的时候,既然常用,那我便记录一下C/C++的动态分配内存空间.打 ...

  2. c语言分配内存空间方法,C语言之动态分配内存空间

    动态分配内存 为什么需要动态分配内存: 1.存储的数据 需要延长生命周期 2.一个指针变量需要存储数据,变量本身只能存地址,不能存数据,需要分配内存空间来存储数据 #include #include ...

  3. CC++动态分配内存(手动分配内存)三种方式

    1. malloc函数 函数原型:void *malloc(unsigned int size) 函数的作用是:在内训的动态存储区开辟一个size个字节的连续空间,返回所分配区域的首字节地址.  可以 ...

  4. 什么时候需要动态分配内存?

    我讲解一下c语言中动态分配内存的函数,可能有些初学c语言的人不免要问了:我们为什么要通过函数来实现动态分配内存呢?系统难道不是会自动分配内存吗??既然有人会问这样的问题,那么我在这里好好的讲解一下吧! ...

  5. 内存空间管理---连续

    连续分配方式 单一连续分配 固定分区分配 动态分区分配 动态重定位分区分配 其他 (1)单一连续分配 内存分为系统区和用户区两部分: 系统区:仅提供给OS使用,通常放在内存低址部分 用户区:除系统区以 ...

  6. C++ | 动态分配内存 new和malloc的区别

    01 静态分配内存 通常声明变量都采用"静态分配"的方式,也就是所有变量声明必须在编译阶段完成. 02 动态分配内存--new和delete 动态分配内存是指程序在运行时才提出分配 ...

  7. c语言 什么时候需要malloc动态分配内存?

    转自https://www.cnblogs.com/tomato0906/articles/7711737.html 我讲解一下c语言中动态分配内存的函数,可能有些初学c语言的人不免要问了:我们为什么 ...

  8. c语言的free函数与内存空间释放

    目录 0 缘起 1 free() 使用前 - free前程序做了什么 2 free 的作用 - free对内存做了什么 - free对指针做了什么 3 free后怎样做 4 Q&A (1) Q ...

  9. 为什么要动态分配内存?什么时候需要动态分配内存?

    问:为什么要动态分配内存 答1:因为内存太宝贵. 答2:如果全部是静止内存不能释放,对于小的程序可以运行完毕.但是对于大的程序,还没运行完,内存就要被占用完,此时就要发生内存泄露. 答3:给定一个占用 ...

最新文章

  1. c语言100以内加减乘除,一百以内的加减乘除法游戏....
  2. ios学习--TableView详细解释
  3. jquery in action 学习笔记
  4. java字节流转字符串_字节流与字符流的区别及相互转换
  5. STM32CubeMX的安装
  6. 电脑分辨率设置工具_手机也能运行电脑上的软件了?苹果这个办法好
  7. python单元测试示范卷_Python单元测试--Unittest
  8. 【转】从CSDN的趣味题学C# 3.0
  9. Child module pom.xml of pom.xml does not exist @
  10. c++ 11 中for循环新增的用法(基于范围的for循环)
  11. 深度篇——目标检测史(五) 细说 SSD 目标检测
  12. 异常处理 | manual close is not allowed over a Spring managed SqlSession
  13. qq邮箱sina邮箱服务器拒绝,为什么有的qq邮箱,新浪这边邮不过去呢?
  14. 2014年8月22日 百度发布“冰桶算法”
  15. PDE——delta函数
  16. mysql 1058_MySQL数据库之mysql启动服务报1058错误的解决方法
  17. APP软件测试点着重详解
  18. A级学科计算机技术,全国学科评估结果出炉 四川高校这些学科进入全国A档
  19. QtXlsx 读写 excel
  20. 算法训练一(贪心、二分)(含解题思路)(上)

热门文章

  1. 基于PaddleOCR银行卡识别实现(一)
  2. 字节辟谣被裁员工与 HR 互殴;苹果头显多个新功能曝光;谷歌希望 RISC-V 成为 T1 级 Android 架构|极客头条
  3. 【江苏省大学生核心就业能力培训(笔记)】
  4. linux 银河麒麟V10 VSFTPD服务端安装、配置的图文教程
  5. 勘探重力实验matlab,MATLAB在重力图制作中的应用
  6. WebSocket connection to ‘ws://XXX‘ failed: Error during WebSocket handshake报错
  7. AWS免费套餐服务器部署NET CORE网站
  8. 为 RSSBus Connect™ 管理界面配置多用户登录
  9. 通过微信扫码登录剖析 oauth2 认证授权技术
  10. 生鲜配送企业如何高效管理订单,为企业降本增效?