专栏首页灰子学技术【C++】几种类型的new介绍

【C++】几种类型的new介绍

现在的C++中,New有三种典型的使用方法,对应于下面三种格式。

1.new : 普通的new操作,一旦内存分配失败,直接抛出一个异常,需要用catch来处理这种异常信息。

2. new(nothrow) : 不抛出异常的new操作, 一旦内存分配失败,禁止抛出异常,而是返回一个NULL,可以通过判断指针是不是NULL来处理这种异常。

3. placement new : 直接复用已经分配好内存的指针的new操作,该操作只是会调用构造函数,将这部分内存重新做初始化操作。

例子如下所示:

函数Func1()里面的 a==NULL可以捕获内存分配失败的场景。

函数Func2(), a==NULL 并不能起到保护内存分配失败的场景,需要用catch来处理。

函数Func3(),placement new操作之后,b的地址与a的地址是一致的,只不过b重新做了这部分内存的初始化操作。

程序运行结果如下所示:

从打印可以看出a和b指向的地址是一致的,并且这个a_从5变成了8, 如下图所示:


本文分享自微信公众号 - 灰子学技术(huizixueguoxue),作者:灰子学技术

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-01-31

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 算法篇:树之二叉树的恢复

    该类题目的核心在于利用前序或者后序遍历找到根节点,利用中序遍历分成左右两棵子树,然后递归操作即可。

    灰子学技术
  • Go并发之atomic

    sync/atomic包提供了原子操作的能力,直接有底层CPU硬件支持,因而一般要比基于操作系统API的锁方式效率高些;这些功能需要非常小心才...

    灰子学技术
  • Go语言之性能分析工具pprof

    pprof:是Go的性能分析工具,在程序运行过程中,可以记录程序的运行信息,可以是CPU使用情况、内存使用情况、goroutine运行情况等,Go语言已经将pp...

    灰子学技术
  • JVM知识点整理

    Java虚拟机在执行java程序的过程中,会把它的内存划分为若干个不同的运行时数据区域,如图所示:

    用户5325874
  • 小游戏内存优化与性能优化

    ? | 导语 听说你的小游戏内存超标?进来了解一下吧。 本文主要跟大家一起来探讨一下Cocos Creator小游戏开发过程中内存优化、性能优化和包体优化。 ...

    腾讯NEXT学位
  • Redis sort命令详解

    redis的sort命令,可能算得上redis里面最复杂的一个命令了,命令原型如下:

    九州暮云
  • 若想在当前路径下去运行非当前路径下的.class文件(即java可执行文件),该如何操作?

    想在当前路径下去运行非当前路径下的.class文件(即java可执行文件),亦即可在任意目录下都可以执行java程序。

    黑泽君
  • 架构师之路--从原理角度来分析性能

      埃及艳后Cleopatra,很小的时候看过妈妈买的一本书里把她的名字翻译成克娄巴特拉,里面有很多描写她美貌的场景描写。然而这个以美貌著称的奇女子,我看到书里...

    静儿
  • Extjs-lesson6

    「效果」:将页面分为了上下左右和中间几个位置更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』

    小闫同学啊
  • 「走进工业互联网」腾讯技术工程沙龙视频回顾

    导读:工业互联网通过构建连接机器、物料、人、信息系统的基础网络,正成为领军企业竞争的新赛道、全球产业布局的新方向、制造大国竞争的新焦点——第四次工业革命(工业4...

    腾讯技术工程官方号

扫码关注云+社区

领取腾讯云代金券