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++中,这两个函数仍然可以使 ...
随机推荐
- POJ1144 Network(割点)题解
Description A Telephone Line Company (TLC) is establishing a new telephone cable network. They are c ...
- 51NOD 1046 A^B Mod C
给出3个正整数A B C,求A^B Mod C. 例如,3 5 8,3^5 Mod 8 = 3. Input 3个正整数A B C,中间用空格分隔.(1 <= A,B,C <= 10^9) ...
- 51NOD 1087 1 10 100 1000
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1087 暴力大法 #include<bits/stdc++.h> ...
- phantomjs在win10下的安装
phantomjs只能通过官网下载,下载地址:http://phantomjs.org/download.html. 1.最好下载在英文文件夹下.下载完成后,解压. 2.进入bin文件,右击属性,将p ...
- php能干什么?
什么是cookies 简单的说,Cookie就是服务器暂存放在你计算机上的一笔资料,好让服务器用来辨认你的计算机.当你在浏览网站的时候,Web服务器会先送一小小资料放在你的计算机上,Cookie 会帮 ...
- 08_Flume_Selector实践
实践一:replicating selector 1.目标场景 selector将event复制,分发给所有下游节点 2.Flume Agent配置 Agent配置 # Name the compon ...
- React Native基础概念和基础认识
学习地址:https://github.com/vczero/react-native-lesson 当我们初始化一个RN项目的时候主要的是index.ios.js文件和index.android.j ...
- Selenium UI 举例 getCssValue
selenium jar包中,在WebElement的接口中, String getCssValue(String var1); 可以通过标签,获取对应的css值.具体要怎么用呢,如下: WebEle ...
- jstl中<c:forEach>的用法
在JSP的开发中,迭代是经常要使用到的操作.例如,逐行的显示查询的结果等.在早期的JSP中,通常使用Scriptlets来实现Iterator或者Enumeration对象的迭代输出.现在,通过JST ...
- java static关键字使用
一.使用static声明属性 1.使用static声明属性,则该属性属于全局变量(有些地方也称静态属性). 2.类的属性调用格式: 类名称.static 属性Preson.country=B城; 二. ...