new释放内存理解c++

2023-05-16

释放内存后,本身抄指针的内容是不会改变的即指针指向没有变,但是它里面保存的地址所对应的内存在系统里标记为未使用的即指向的内存区域已经被系统收回了,这块内存随时可能会被分配给其他进程或进程里面的变量使用,所以要避免使用此指针,因此要把这个指针置为NULL, NULL指针是不指向任何一个地址的,nullptr  和  NULL  一样

指针指向的是数组用delete[]   (中间有无空格都可),否则用delete

delete[] 
delete [] 

如下,其他指针有指向此new指针首地址,只需要释放一次,两个任意释放一个即可,不能两个都释放,因为他们指向同一块内存( 不能释放已经释放的内存块),如果其他指针不指向此new指针首地址则不能用其他指针释放

int *cossinidx = new int[ndstwidth * 2];
int * cossinptr = cossinidx;

函数内部的定义的临时变量指针就像其他变量一样,函数结束则自动被释放,但是new的内存空间不会被释放,所以要手动释放

如果向此new空间首地址的指针是在函数内定义的,函数结束会自动被释放,把它置为NULL,是担心它在此函数内被再次使用,如果是在函数结束释放了new的空间,此指针也可以不置为NULL

在函数的内new空间后的每一个返回值前面都要进行释放

指向此new指针首地址的指针才能释放此内存是因为地址首地址里面存放了很多信息,包括了内存大小等信息,再释放指针的时候系统会自动根据这些信息释放内存

delete[]   rg   用来释放rg指向的内存,!!还逐一调用数组中每个对象的destructor

new()分配这种类型的一个大小的内存空间,并用括号中的值来初始化这个变量

new[] 分配这种类型的n个大小的内存空间,并用默认构造函数来初始化这些变量

int *pp=new int;//delete pp;
int *p0=new int[3] {1,2,3};//delete[] p0;
int *p1=new int[3] ;//delete[] p1;

malloc和new一样,但是释放空间用free

 

对空指针应用delete是安全的

 

定义一个指针但是未赋值时,指针为NULL

int* p;

 

new创建类对象例子:CTest* pTest = new CTest();

delete pTest;

pTest用来接收类对象指针。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

new释放内存理解c++ 的相关文章

  • 在Eclipse中查看UML图(以及eclipse-file-new-other,找不到AmaterasUML问题解决)

    安装GEF和AmaterasUML 安装AmaterasUML前 xff0c 需要先安装GEF 采用eclipse在线安装方式安装就好 eclipse在线安装GEF的地址 xff1a http download eclipse org to
  • Cpp--重载全局的new和delete

    include lt iostream gt include lt process h gt include lt string h gt include lt stdio h gt define MAX SIZE 30000 char M
  • delete释放new[] 以及 delete[]释放new 的问题

    在同花顺 的笔试过程中遇到这么一个类似问题 A ptr 61 new A 10 for int i 61 0 i lt n i 43 43 delete amp ptr i 由此衍生出两个问题 new 申请的空间用delete释放会发生什么
  • New Timeline的Toolbar样式设计

    最近在做新版的Timeline xff0c Toolbar Menu 的功能基本完成 xff0c 因此把截图拿出来与各位博友分享一下 新版Timeline HTML版本 主页面 xff1a 这次主要讲解一下Toolbar Menu 的功能
  • TypeError: __new__() got an unexpected keyword argument 'serialized_options'

    Python 2 7 12 default Nov 12 2018 14 36 49 GCC 5 4 0 20160609 on linux2 Type 34 help 34 34 copyright 34 34 credits 34 or
  • c++ new运算符是如何调用构造函数的

    文章目录 内存申请和对象构造placement new答案很简单参考链接 内存申请和对象构造 本文内容简短 xff0c 只为记录下一次思考过程 xff0c 事情起源于一句话 xff0c new操作符会调用operator new分配内存再调
  • new[]和new调用地址的简单跟踪

    重写这两个操作符 xff0c 插入打印语句 xff0c 可获得调用地址 代码如下 xff1a include lt Windows h gt include lt iostream gt include lt stdlib h gt inc
  • 2022 New Year‘s Resolution

    Some Might Say 2022 New Year 39 s Resolution Some might say we are on the edge of the new era Always are they saying thi
  • c++---构造函数以及new和delete的使用

    目录 一 构造函数和析构函数的语法 二 构造函数的分类和调用 三 拷贝构造函数的调用时机 1 用已经创建好的对象来初始化新的对象 2 用值传递的方式 给函数参数传值 3 以值的方式 返回局部对象 四 构造函数调用规则 五 初始化列表 六 类
  • 函数(new)

    函数 xff08 new 一 字符串处理函数 1 字符串的输入 xff08 1 xff09 scanf span class token macro property span class token directive keyword i
  • c++中类型用new和不用new的区别

    解析一 xff1a new创建类对象 xff0c 使用完后需使用delete删除 xff0c 跟申请内存类似 所以 xff0c new有时候又不太适合 xff0c 比如在频繁调用场合 xff0c 使用局部new类对象就不是个好选择 xff0
  • Java 接口和抽象类可以被new么?——顺便总结内部类

    转载 xff1a https blog csdn net hackersaillen article details 47281549 背景 xff1a 最近有同事跟我说了他面试时遇到的问题 xff0c 考官问 xff1a 接口和抽象类可以
  • MxNet系列——how_to——new_op

    博客新址 http blog xuezhisd top 邮箱 xff1a xuezhisd 64 126 com 如何创建新的操作符 网络层 本节内容描述了创建新的MXNet操作符 xff08 或网络 xff09 的过程 我们已经尽了最大努
  • 一次向svn中增加所有新增文件 svn add all new files

    http wp4d sinaapp com 2012 02 19 E4 B8 80 E6 AC A1 E5 90 91svn E4 B8 AD E5 A2 9E E5 8A A0 E6 89 80 E6 9C 89 E6 96 B0 E5
  • c++中 new的使用方法

    c 43 43 中 xff0c new的用法很灵活 xff0c 这里进行了简单的总结 1 new 分配这种类型的一个大小的内存空间 并以括号中的值来初始化这个变量 2 new 分配这种类型的n个大小的内存空间 并用默认构造函数来初始化这些变
  • new 、 delete 、 malloc 、 free 关系

    1 new delete malloc free 关系 delete 会调用对象的析构函数 和 new 对应 free 只会释放内存 xff0c new 调用构造函数 malloc 与 free 是 C 43 43 C 语言的标准库函数 x
  • c#中new一个对象以后,是否需要手动释放?

    c 中new一个对象以后 xff0c 是否需要手动释放 xff1f 2012 04 28 23 43 wshbfzdzb 分类 xff1a C NET 浏览723次 c 43 43 中 class1 a 61 new class1 需要在用
  • 经典C语言面试题1:malloc 和 new的区别?

    malloc free是 C C语言的标准库函数 而new delete是C 的运算符 malloc内存分配成功返回的类型为void 需要通过强制类型转换将void 转换为我们需要的类型 new内存分配失败时会抛出bac alloc异常 不
  • memset in C++ and C

    definition memset是计算机中C C 语言函数 将s所指向的某一块内存中的前n个 字节的内容全部设置为ch指定的ASCII值 第一个值为指定的内存地址 块的大小由第三个参数指定 这个函数通常为新申请的内存做初始化工作 其返回值
  • 20个常见的Java错误以及规避方法

    原文 50 Common Java Errors and How to Avoid Them Part 1 作者 Angela Stringfellow 翻译 雁惊寒 译者注 本文介绍了20个常见的Java编译器错误 每种错误都包含了代码片

随机推荐

  • c++,vc6.0 报错unreferenced local variable

    c 43 43 xff0c vc6 0 报错 unreferenced local variable 原因 xff0c 有的东西没有用到 xff0c 如果真的没有用的话可以直接删掉
  • Servlet学习之生成随机数

    令页面生成一个每五秒产生一个数字的动态图 span class token keyword package span com span class token punctuation span servlet span class toke
  • 程序员也该懂点UI细节

    虽然说项目开发过程中 xff0c 美工和程序各司其职 但是很多时候程序员本身也要知道一些UI设计的细节 一 每个页面的功能上要突出重点 比如说你首页是想引导更多用户注册的话 xff0c 你就要把注册按钮突出出来 如果你首页是你想引导用户更快
  • ftp 客户端软件的传输模式ASCII和二进制

    FTP可用多种格式传输文件 xff0c 通常由系统决定 xff0c 大多数系统 包括UNIX系统 只有两种模式 xff1a 文本模式和二进制模式 文本传输器使用ASCII字符 xff0c 并由回车键和换行符分开 xff0c 而二进制不用转换
  • 百度2015校园招聘软件开发笔试题及答案

    简单题 xff08 本题共30分 xff09 请简述Tcp ip的3次握手以及4次挥手过程 xff1f 并解释为何关闭连接需要4次挥手 10分 详细答案参见TCP IP协议三次握手与四次握手流程解析 TCP三次握手 四次挥手过程如下 通常情
  • 一步一步定制自己的google map(各个省市的经纬度查询)

    安徽省 合肥 北纬31 52 东经117 17 安徽省 安庆 北纬30 31 东经117 02 安徽省 蚌埠 北纬32 56 东经117 21 安徽省 亳州 北纬33 52 东经115 47 安徽省 巢湖 北纬31 36 东经117 52
  • 网页刷新或者重新加载后滚动条的位置不变

    在开发的过程中我们经常需要重新加载或者刷新某个画面 xff0c 已确保数据显示是最新的 但是如果一丁点改变就刷新画面的话 xff0c 会导致用户体验很差 xff0c 想想看你好不容易把网页拖到最后 xff0c 结果点击某个按钮的时候 xff
  • 番茄工作法(番茄钟时间管理)

    番茄工作法是我一次偶然的时间在网上看到的 xff0c 因为自己性格大大咧咧 丢三落四 xff0c 所以经常容易在时间问题上犯迷糊 很多人都有时间拖沓症 xff0c 就是一件事不到最后阶段不去解决它 比如你有一个星期的时间写的毕业论文 xff
  • jquery中美元符号($)命名冲突

    在Jquery中 xff0c 是JQuery的别名 xff0c 所有使用 的地方也都可以使用JQuery来替换 xff0c 如 39 msg 39 等同于JQuery 39 msg 39 的写法 然而 xff0c 当我们引入多个js库后 x
  • js实现省市联动

    效果图如下 xff1a 思路很简单 xff0c 就是先加载省信息 xff0c 然后当省改变的时候加载市县信息 烦的是数据的录入 xff0c 代码如下 lt DOCTYPE html PUBLIC 34 W3C DTD XHTML 1 0 T
  • 正则在小偷程序中的应用(续)

    获取资源信息 content 61 file get contents 34 http list sososteel com qg list html pg 61 1 amp h 61 34 time 对抓取的信息进行处理 取class为l
  • mysql密码过期问题解决方案

    mysql密码过期问题解决方案 问题再现 xff1a 密码过期 旧电脑许久没有用 xff0c 今天打开发现数据库连接不上了 提示密码过期 xff0c 请修改密码 ERROR 1862 HY000 Your password has expi
  • 安装MITIE的条件

    1 版本 在安装rasa xff08 1 1 8 xff0c 其它版本应该也行 xff09 时候必须安装mitie xff0c 下面是我安装mitie时的环境 xff1a 1 VS2017 装没装忘记了 xff0c 但是电脑中有Micros
  • Linux重启命令 / 查看、重启、禁用网卡命令 / 修改IP / 操作防火墙命令

    重启命令 1 reboot 2 shutdown r now 立刻重启 root用户使用 3 shutdown r 10 过10分钟自动重启 root用户使用 4 shutdown r 20 35 在时间为20 35时候重启 root用户使
  • Centos下rpm离线下载与安装命令

    xff08 1 xff09 安装yum即相关插件 sudo apt get install yum sudo apt get install yum utils sudo yum install yum plugin downloadonl
  • Windows下搭建Vxworks开发环境,VMware虚拟机实现

    这是本人自己整理的笔记 xff0c 参考了两篇文章 xff0c 大同小异 参考的第一篇 xff1a http hi baidu com hezhe1008 blog item 26e5cd53364eb314377abe01 html 参考
  • 使用opencv下的sift进行特征匹配(python)

    1 安装opencv 首先确保安装了opencv包和vs2015 xff0c 命令为 xff1a pip install opencv python 也可以直接下载安装文件 xff0c 测试代码 import cv2 import nump
  • CentOS7.0上用命令安装Chrome浏览器。

    1 配置yum下载源 xff1a 在目录 etc yum repos d 下新建文件 google chrome repo 并且在该文件中添加如下内容 xff1a 1 google chrome 2 name 61 google chrom
  • centos7安装anaconda

    步骤一 xff1a 删除centos7中自带有python2 7 xff08 可选 xff09 xff08 1 xff09 强制删除已安装python及其关联 rpm qa grep python xargs rpm ev allmatch
  • new释放内存理解c++

    释放内存后 xff0c 本身抄指针的内容是不会改变的即指针指向没有变 xff0c 但是它里面保存的地址所对应的内存在系统里标记为未使用的即指向的内存区域已经被系统收回了 xff0c 这块内存随时可能会被分配给其他进程或进程里面的变量使用 x