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

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

在C++中,这两个函数仍然可以使用,但是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. c++重载运算符_C/C++编程笔记:运算符重载丨重载C++中的New和Delete运算符

    new和delete运算符也可以像C ++中的其他运算符一样重载.New和Delete运算符可以全局重载,也可以在特定类中重载. (1)如果使用某个类的成员函数来重载这些运算符,则意味着这些运算符仅针 ...

  2. JavaScript中delete运算符

    JavaScript中delete运算符是 从对象中删除一个属性,或从数组中删除一个元素. 使用方法: delete expressionwww.mlybyby.com expression 参数是一 ...

  3. c++中的new与delete运算符

    ** C++语言中内存的管理使用new和delete运算符实现分别用于内存申请与内存释放** 1.new运算符 基本格式: 类型说明符 * 指针变量名 = new 类型说明符 格式二 类型说明符 * ...

  4. Cpp 对象模型探索 / delete 运算符内部调用过程分析

    一.delete 调用过程 1.测试代码,在 delete 处打下断点. class CTest { public:CTest() {}~CTest() {} };int main() {CTest* ...

  5. C++new和delete运算符

    C++new和delete运算符 1)new 2)delete 3)operator new和operator delete的实现 4)针对数组的new语意 1)new int *pi = new i ...

  6. C++ 重载new和delete运算符

    内存管理运算符 new.new[].delete 和 delete[] 也可以进行重载,其重载形式既可以是类的成员函数,也可以是全局函数.一般情况下,内建的内存管理运算符就够用了,只有在需要自己管理内 ...

  7. 用new和delete运算符进行动态分配和撤销存储空间

    測试描写叙述:暂时开辟一个存储空间以存放一个结构体数据 #include <iostream> #include <string> using namespace std; s ...

  8. offsetWidth和width的区别 逻辑中断 delete运算符 。。。。

    offsetWidth和width的区别: 1.offsetWidth属性可以返回对象的padding+border+widt属性值之和,style.width返回值就是定义的对象的width属性值. ...

  9. new在c 语言中的用法,详解C++中new运算符和delete运算符的使用

    C++ 支持使用 new 和 delete 运算符动态分配和释放对象.这些运算符为来自称为"自由存储"的池中的对象分配内存. new 运算符调用特殊函数 operator new, ...

  10. C++中的new和delete运算符(内存管理)

    首先,作为一个程序员我们要学会如何管理内存,这里主要是堆内存,栈内存由系统管理, 在c中我们使用malloc和free,系统调用时使用sbrk函数 在c++中对于内存的管理,有两个运算符new和del ...

最新文章

  1. Xamarin中Unsupported major.minor version 52.0问题解决
  2. Split-plot设计 SAS实践
  3. 2014年 第5届 蓝桥杯 Java B组 省赛解析及总结
  4. install-info - 更新 info/dir 项
  5. jpa in查询_优选在shopee虾皮怎么发货价格查询皮皮虾云仓
  6. SpringBoot 精通系列-如何优雅地使用Mybatis的XML配置
  7. CF567E President and Roads
  8. poj 1068 Parencodings
  9. 【动态规划 回文串13】LeetCode 647. Palindromic Substrings
  10. 这打车App麻烦了!遭黑客勒索巨额比特币
  11. 【Git/Github学习笔记】Git的工作流程
  12. CMM术语表详细说明
  13. fseek函数的用法
  14. 单日复利,单月复利计算java实现
  15. “碳壁垒”悄然而起,碳足迹如何算清楚、减明白?|双碳科普
  16. C++实现 层次分析法(AHP)
  17. Spring In Action 学习 第一章 Spring之旅
  18. 关于前端授权获取微信用户信息实践
  19. linux网络编程中端口号和ip地址转换方法
  20. pytorch_lesson13.2 模型拟合度概念介绍+模型欠拟合实例+单隐藏层激活函数性能比较+相同激活函数不同隐藏层数结果对比+神经网络结构选择策略

热门文章

  1. js for foreach 快慢_js基本搜索算法实现与170万条数据下的性能测试
  2. cnn 验证集 参与训练吗_一个简单的零基础的机器学习教程之二,字母数字验证码识别...
  3. Android平台RTSP轻量级服务|RTMP推送摄像头或屏幕之音频接口设计
  4. SpringMVC深度探险 —— SpringMVC核心配置文件详解
  5. qt更改类名_Qt编写自定义控件属性设计器
  6. 8款JVM性能调优监控工具(提高开发效率)
  7. 浅谈python使用多态跟不用多态的区别_python 多态和 super 用法
  8. java按钮触发另一个页面_前端跨页面通信,你知道哪些方法?
  9. abap al设置单元格可编辑 oo_利用WPS做业务系统的超级编辑器
  10. Jackson快速入门