在C语言中,动态分配内存用 malloc() 函数,释放内存用 free() 函数。如下所示:

int *p = (int*) malloc( sizeof(int) * 10 ); //分配10个int型的内存空间free(p); //释放内存

在cpp中,这两个函数仍然可以使用,但是C++又新增了两个关键字,new 和 delete:new 用来动态分配内存,delete 用来释放内存。

用 new 和 delete 分配内存更加简单:

int *p = new int; //分配1个int型的内存空间delete p; //释放内存

new 操作符会根据后面的数据类型来推断所需空间的大小。

如果希望分配一组连续的数据,可以使用 new[]:

int *p = new int[10]; //分配10个int型的内存空间delete[] p;

用 new[] 分配的内存需要用 delete[] 释放,它们是一一对应的。

和 malloc() 一样,new 也是在堆区分配内存,必须手动释放,否则只能等到程序运行结束由操作系统回收。为了避免内存泄露,通常 new 和 delete、new[] 和 delete[] 操作符应该成对出现,并且不要和C语言中 malloc()、free() 一起混用。

C++ new和delete相关推荐

  1. Reject: HTTP ‘DELETE‘ is not allowed, Not injecting HSTS.....DELETE请求PUT请求跨域问题

    CORS(DELETE请求.PUT请求) Reject: HTTP 'DELETE' is not allowed [DEBUG] 2021-08-25 15:23:52.401 [http-nio- ...

  2. Git 常用操作(6)- 推送到远程仓库(git push)删除远程分支(git push origin --delete)

    1. git remote add--添加远程仓库 在GitHub 上创建的仓库路径为 "git@github.com:用户名/git-tutorial.git".现在我们用git ...

  3. C++ 笔记(14)— 指针(指针声明、取地址、取值、new/delete、NULL指针、指针运算、指针数组、数组指针、指针传递给函数、从函数返回指针)

    1. 声明指针 指针是一个变量,其值为另一个变量的地址,即,内存位置的直接地址.就像其他变量或常量一样,您必须在使用指 针存储其他变量地址之前,对其进行声明. 指针变量声明的一般形式为: type * ...

  4. C++:随笔6---new\delete\虚方法\抽象方法

    指针是一种专门用来存储内存地址的数据类型.(他存储的不是具体的数据而是别人的地址) 常用做法是:创建一个变量,再把这个变量的地址赋值给一个指针,然后就可以用指针去访问这个变量的值. 事实上在C和C++ ...

  5. C++中的new和delete用法

    //个体 point *p=new point; //point类存在初始化成员函数point(void)的前提下才能这样赋值: delete p;//一维数组,这样赋值的话,p在程序里表示的就不是指 ...

  6. LeetCode刷题记录3——237. Delete Node in a Linked List(easy)

    LeetCode刷题记录3--237. Delete Node in a Linked List(easy) 目录 LeetCode刷题记录3--237. Delete Node in a Linke ...

  7. 在析构函数中delete this指针问题

    思考:在析构函数中delete this指针,运行下面代码会产生什么样的结果呢? #include <iostream> using namespace std; class A{ pub ...

  8. LSM 优化系列(四) -- Rocksdb和Lethe 对Delete问题的优化

    文章目录 前言 1. 问题背景 2. 问题复现 3. Rocksdb 的 Delete-Aware 优化 3.1 可配置的 Delete-Aware调度 3.2 Compaction 逻辑对 dele ...

  9. leetcode 237: Delete Node in a Linked List

    题目: Write a function to delete a node (except the tail) in a singly linked list, given only access t ...

  10. 【C++】C/C++ 中default/delete特性

    C++类的特殊成员函数及default/delete特性 本文内容侧重个人理解,深入理解其原理推荐https://www.geeksforgeeks.org 目录 目录 C++类的特殊成员函数及def ...

最新文章

  1. 不信你看!这次Python和AI真的玩儿大了!!
  2. 快速了解Alias method/别名采样方法
  3. MongoDB 基本操作增删改查
  4. C#读取配置文件app.config
  5. 【Weiss】【第03章】练习3.20:中缀表达式转后缀表达式
  6. 如何解决复杂条件下的程序流的控制问题?
  7. ubuntu nginx安装
  8. mixin network_【译文】Mixin——以最高的安全性满足所有区块链资产的交易需求
  9. linux-简单进程查询
  10. java token身份认证_java – 基于Spring Security Token的身份验证
  11. 华为视频会议系统常见问题及解决方法
  12. Charles青花瓷抓包
  13. 网站域名过户查询_过期域名查询
  14. 看我如何自制安全的远程控制工具
  15. 什么?你还不知道offsetX、offsetY和clientX、clientY和pageX、pageY和screenX、screenY的区别,进来唠唠
  16. 静态库与动态库(共享库)的联系与区别
  17. MySQL JDBC PreparedStatement
  18. zigbee3.0 BDB 介绍(一)
  19. 云南省自然保护区分布及功能区划
  20. 天狮集团新零售有什么优势?天狮直销等于天狮新零售?

热门文章

  1. 计算机视觉子方向,计算机视觉方向简介 | 人脸识别中的活体检测算法综述
  2. libsvm python_LibSVM for Python 使用
  3. V4L2应用程序框架
  4. VxWorks系统BSP配置文件及生成下载
  5. mysql client 未开启_Django+mysqlclient未关闭数据库连接
  6. 测试鼠标双击_鼠标环境可靠性测试是什么
  7. 【转】C#开发笔记之05-迭代器中的状态机(State Machine)到底是什么?
  8. 查看mysql数据库的死锁日志_【MySQL】mysql死锁以及死锁日志分析
  9. 一种类的渐进式开发写法
  10. 关于@DateTimeFormat 和 @JsonFormat 注解