1.5 C++ new和delete操作符
参考:http://www.weixueyuan.net/view/6331.html
需要注意的是new、new[]、delete和delete[]是操作符,而非函数;new和delete也是C++的关键字。
操作符new用于动态分配单个空间,而new[]则是用于动态分配一个数组,操作符delete用于释放由new分配的空间,delete[]则用于释放new[]分配的一个数组。
“new 数据类型”即为new关键字的基本语法,可以动态的分配一个数据类型大小的空间。例如:
- int *p = new int;
为p指针分配了一个int型的空间。new操作符根据请求分配的数据类型来推断所需的空间大小。
new[] 则是为了分配一个数组的空间。具体语法如:
- int *A = new int[10];
该语句为A指针分配了一个数组的空间,该数组有10个int数组成员,如果分配成功,则p指针指向首地址,并且数组10个成员的地址是连续的,其地址分别为A、A+1、A+2、……、A+9。
delete操作符则专门用于释放由new分配的动态存储空间,在前面我们为p分配了一个int型的空间,我们可以按照如下的方式释放它:
- delete p;
delete[] 则用于释放掉由new[]分配的数组空间,在前面我们为A指针分配了十个int单元,构成了一个数组,可以按照如下方式释放掉该空间:
- delete[] p;
为了避免内存泄露,通常new和delete、new[]和delete[]操作符应该成对出现,并且不要将这些操作符与C语言中动态分配内存和释放内存的几个函数一起混用。建议在编写C++程序时尽量使用new、new[]、delete和delete[]操作符进行动态内存分配和释放,而不要使用C语言中内存分配和释放的函数,这是因为new、new[]、delete和delete[]操作符可以使用C++的一些特性,如类的构造函数和析构函数,能够更好地管理C++程序的内存。
1.5 C++ new和delete操作符的更多相关文章
- Javascript的变量与delete操作符
原文:http://charlee.li/javascript-variables-and-delete-operator.html 刚刚看到一篇好文(原文链接), 对Javascript中的dele ...
- javascript之delete操作符
理解delete 理论 代码段的类型 执行上下文 活动对象 / 变量对象 属性的特性 内置属性与 DontDelete 未声明的赋值 Firebug的困惑 在eval中删除变量 浏览器兼容性 Geck ...
- C++ 重载new和delete操作符
原因: C++标准库提供的new和delete操作符,是一个通用实现,未针对具体对象做具体分析 存在分配器速度慢.小型对象空间浪费严重等问题,不适用于对效率和内存有限制的应用场景 好处: 灵活的内 ...
- 重载new delete操作符是怎么调用的
自定义的new操作符是怎么对英语new 一个对象的?自定义的delete操作符什么情况下得到调用?new一个对象时出现异常需要我操心内存泄露吗?下面的一个例子帮我们解开所有的疑惑. 1. 调用规则 ...
- C++之new和delete操作符
在C语言中的动态分配和释放内存的函数是malloc calloc 和 free , 而在C++中要用 new new[] delete delete[] 来申请动态空间和释放空间. 注意:的是new. ...
- js delete 操作符
delete操作符很陌生,很少会用到,但是既然碰到了,就mark一下: delete 操作符用于删除一个对象的属性: 注意点:只能删除自己的属性,从原型链上继承的属性是无法删除的:
- C++ new delete操作符
//new delete操作符 #define _CRT_SECURE_NO_WARNINGS #include<iostream> using namespace std; /* 1.n ...
- js中的内部属性与delete操作符
本文正式地址:http://www.xiabingbao.com/javascript/2015/08/03/javascript-delete-configurable 在讲解Configurabl ...
- C++语言基础(2)-new和delete操作符
在C语言中,动态分配内存用 malloc() 函数,释放内存用 free() 函数.如下所示: ); //分配10个int型的内存空间 free(p); //释放内存 在C++中,这两个函数仍然可以使 ...
随机推荐
- 获取转UTF8的字符串
/// <summary> /// 获取转UTF8的字符串 /// </summary> /// <param name="strWord">& ...
- opencv-python 学习初探1
本人是windows10 ,Python3.6 32位.因为业务需要,需要实现一批图片处理,对比PIL和OpenCV后,选择后者.此文为菜鸟记录,大手子们求放过. 1.下载. 直接 pip insta ...
- Leetcode ——Partition Equal Subset Sum
Question Given a non-empty array containing only positive integers, find if the array can be partiti ...
- HDU 6150 Vertex Cover(构造)
http://acm.hdu.edu.cn/showproblem.php?pid=6150 #include<iostream> #include<algorithm> #i ...
- C#在服务端验证客户端证书(Certificate)
使用https协议进行通讯的时候可以设置双向证书认证,客户端验证服务端证书的方法前面已经介绍过了,现在说一下在服务端验证客户端证书的方案. 这里给出的方案比较简单,只需要在Service端的配置文件中 ...
- Hibernate与iBastis 比较(转载)
Hibernate VS iBATIS 简介 Hibernate 是当前最流行的O/R mapping框架,当前版本是3.05.它出身于sf.net,现在已经成为Jboss的一部分了 iBATIS ...
- nginx configuration
Now that you know how to manage the service itself, you should take a few minutes to familiarize you ...
- python获取文件扩展名的方法
主要介绍了python获取文件扩展名的方法,涉及Python针对文件路径的相关操作技巧 import os.path def file_extension(path): ] print file_ex ...
- C语言专题-基本数据类和占位符
C语言中常用的几种基本数据类型有 基本数据类型的长度 unsigned unsigned unsigned unsigned float没有unsigned double没有unsigned 占位符的 ...
- Spring Boot中注解事务