#include <iostream>

using namespace std;
// C中开辟空间的方式 所有的返回值 都是 void *
/// int * p = (int*)malloc(sizeof (int))
/// malloc 在堆上开辟空间并没有进行初始化
///
/// int* pa = (int*)calloc(1,sizeof (int));
/// calloc 在堆上开辟空间是有初始化的
/// 在原来的基础上 pa 再次开辟 10 个空间
///
/// int *pa1 = (int*)realloc(pa,sizeof(int)*10);
/// 原来空间的数据 拷贝一份 (pa)
/// realloc 在堆上开辟空间是有初始化的
/// 释放空间
/// free(p)
/// free(pa)
/// free(pa1)
/// 同一块堆区空间被多次释放会造成 doublefree 的现象,程序会异常终止
///
// C++中开辟空间的方式
/// C++中提供了关键字 new 来动态开辟空间 ,为了释放空间 提供了关键字delete 来释放空间
/// 堆上的空间手动申请,手动释放,不然就是内存泄露
/// 使用 new + 类型 [N] 动态开辟 N 个类型的空间
/// 如果是连续开辟空间要释放使用 delete [] 进行释放
/// 对于内置类型而言 new 相当于是 malloc delete 相当于是 free
/// 内置类型和自定义类型
/// 如果是自定义类型 new 代表两种含义,1. 开辟空间 2. 调用类中的构造函数进行初始化
/// delete 代表2中含义:调用类中的析构函数,释放空间
///
/// new 和 malloc 的联系
/// new 的底层就是使用 malloc 实现的
/// malloc 如果申请空间失败返回 Null
/// new 如果申请空间失败抛出异常 bad_alloc()
/// new 是按照类型开辟空间的 , 而 malloc 是按字节为单位开辟空间的
/// 对自定义的类型来说,new 不仅开辟空间 还会调用自定义类中的构造函数
/// delete 不经释放空间 还会先调用自定义类中的析构函数
int main()
{
// new 开辟空间的方式是使用new按照类型直接开辟的空间
// 同时,在内置类型的后面加上 () 表示编译器在括号取值初始化内置类型所开辟的内存中的值
int *p = new int(); // 动态连续开辟空间
int* pb = new int[1024]; // 连续开辟空间并初始化
int* pc = new int[1024]{1,2,3}; // 开辟空间并赋值 C++11的新语法 // 使用 delete 释放已经开辟的空间
delete p;
delete [] pb;
delete [] pc;
cout << "Hello World!" << endl;
return 0; }

C++第七节课 new开辟空间 delete释放空间的更多相关文章

  1. centos Linux下磁盘管理 parted,df ,du,fdisk,partprobe,mkfs.ext4,mount,/etc/fstab,fsck,e2fsck,mk2efs,tmpfs ,nr_inodes, LVM,传统方式扩容文件系统 第七节课

    centos Linux下磁盘管理   parted,df ,du,fdisk,partprobe,mkfs.ext4,mount,/etc/fstab,fsck,e2fsck,mk2efs,tmpf ...

  2. new/new[]和delete/delete[]是如何分配空间以及释放空间的

    C++中程序存储空间除栈空间和静态区外,每个程序还拥有一个内存池,这部分内存被称为或堆(heap).程序可以用堆来存储动态分配的对象,即那些在程序运行时创建的对象.动态对象的生存期由程序来控制 ,当动 ...

  3. 《linux就该这么学》第七节课:文件的各种权限以及linux分区命名规则

    笔记 (借鉴请改动) 5.3:文件特殊权限 SUID  临时拥有文件所有者的权限(基本上只是执行权限) SGID  临时拥有文件所有组的权限,在目录中创建文件自动继承该目录的用户组. SBIT  粘滞 ...

  4. html第七节课

    document 1.Window.document对象 一.找到元素: docunment.getElementById("id"):根据id找,最多找一个:    var a ...

  5. 7、第七节课,js逻辑运算

    1.条件语句 function MyClick() { ; ; ; if (iNum1==iNum2) { iNum2=iNum3; } alert(iNum2); } 2. iNum3=iNum1& ...

  6. Linux第七节课学习笔记

    RHEL7用户身份有以下这些: 1.管理员 root UID:0 权限最大: 2.系统用户 UID:1-999: 3.普通用户 UID:1000+. 一个用户基本组只有一个,扩展组可多个,创建扩展组用 ...

  7. php第七节课

    多态,重载,克隆 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://ww ...

  8. C#第七节课

    for嵌套 using System;using System.Collections.Generic;using System.Linq;using System.Text;using System ...

  9. delete释放空间时出错的原因

    int *a=new int[10]; ...... delete []a; 后面“delete []a;”出现错误的情况大致有: 1 数组的首地址a被你有意无意更改了,如:a++之类的: 2 变量的 ...

  10. 为什么delete后磁盘空间没有释放而truncate会释放?

    背景 因项目需求,需要清理一批旧数据,腾出空间给新数据,让同事负责这件事.料想会很顺利,但很快找到我,并告知在postgresql中把一张大的数据表删除掉了,查询表的size并没有改变. 我震惊了,问 ...

随机推荐

  1. LangChain的LCEL和Runnable你搞懂了吗

    LangChain的LCEL估计行业内的朋友都听过,但是LCEL里的RunnablePassthrough.RunnableParallel.RunnableBranch.RunnableLambda ...

  2. 【C】Re04

    一.类型限定符 extern 声明一个变量,extern声明的变量没有存储空间 const 定义一个常量,该常量必须赋值,之后且不允许更改 volatile 防止编译器优化代码??? register ...

  3. 【转载】 CPU漏洞 —— 一步一步理解CPU芯片漏洞:Meltdown与Spectre

    原文: https://www.freebuf.com/articles/system/159811.html 参考: https://blog.csdn.net/xy010902100449/art ...

  4. 国产软件如何让人再次失望——!20824 mindspore1.3.0gpu version can not compile from source code, because openmpi source code has bug

    如题,该PR地址: https://gitee.com/mindspore/mindspore/pulls/20824#note_7053720 What type of PR is this? Un ...

  5. 纯css美化滚动条样式

    https://www.emperinter.info/2020/09/20/scrollbar-in-browser/ 自己完善自己博客再Ipad等移动端的菜单时选用了左右滑动的菜单模式!当然就会使 ...

  6. 生成式 AI:机会与风险并存,企业该如何取舍?

    作者 | 李晨 编辑 | Debra Chen Gartner最近对全球2,500名高管进行的一项调查发现,近一半(45%)的人表示,ChatGPT的宣传促使他们增加人工智能(AI)投资.调查报告称, ...

  7. 02-canvas注意点

    1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="U ...

  8. 重装win10

    作者:最强近战SCV链接:https://www.zhihu.com/question/54059979/answer/618694754来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业 ...

  9. 一加8t救砖教程

    关机 按住音量上下和电源键 重启到fastboot 取到原系统boot ./fastboot flash boot_a boot.img ./fastboot flash boot_b boot.im ...

  10. 使用广播星历计算卫星坐标(Python)

    前言 本代码为GNSS课程设计代码,仅供参考,使用的计算方法与公式均来源于王坚主编的<卫星定位原理与应用(第二版)>. 本代码计算结果可以通过下载精密星历进行比照,误差在1-10m左右. ...