请说明new operator和operator new之间的差异
2014-04-19 18:10
190 查看
string *ps = new string("Memory Management");----------new operator
①它分配足够的内存,用来设置某类型的对象
②它调用一个constructor,为刚才分配的内存中的那个对象设定初值
new operator总是做这两件事,无论如何你不能改变其行为,你能改变的是用来容纳对象的那块内存的分配行为。
new operator调用某个函数,执行必要的内存分配动作,你可以重写或重载那个函数,改变其行为。
delete operator做与new operator相反的动作。例如:
string *ps;编译器近似产生以下代码:ps->~string();
delete ps; operator delete(ps);
这里呈现的一个暗示就是,如果你只打算处理原始的,未设初值的内存,应该完全回避new operator和delete operator,改调用operator new取得内存并以operator delete归还给系统:
void *buffer = operator new(50*sizeof(char));
operator delete(buffer);
①它分配足够的内存,用来设置某类型的对象
②它调用一个constructor,为刚才分配的内存中的那个对象设定初值
new operator总是做这两件事,无论如何你不能改变其行为,你能改变的是用来容纳对象的那块内存的分配行为。
new operator调用某个函数,执行必要的内存分配动作,你可以重写或重载那个函数,改变其行为。
delete operator做与new operator相反的动作。例如:
string *ps;编译器近似产生以下代码:ps->~string();
delete ps; operator delete(ps);
这里呈现的一个暗示就是,如果你只打算处理原始的,未设初值的内存,应该完全回避new operator和delete operator,改调用operator new取得内存并以operator delete归还给系统:
void *buffer = operator new(50*sizeof(char));
operator delete(buffer);
相关文章推荐
- new operator、operator new 、placement new三者之间的区别与联系
- 数据库中,连接有哪些不同类型?请说明这些类型之间的差异,以及为何在某些情形下,某种连接会比较好。
- new operator、operator new 、placement new三者之间的区别与联系
- 图示说明L1/L2/内存/硬盘之间速度差异-非常直观!
- 注意: new operator和operator new 以及placement new的差异【转载】
- 数据库中,连接有哪些不同类型?请说明这些类型之间的差异,以及为何在某些情形下,某种连接会比较好。
- new operator、operator new 、placement new三者之间的区别与联系
- 关于两个GPRS之间点对点通信的一些说明。
- operator new与new operator
- 分享下mysql各个主要版本之间的差异
- Oracle 和 SQL Server 在处理 NULL 和空值之间的差异
- 【数据库关系模型之关系代数】θ连接,等值连接和自然连接之间的差异
- JSP与Servlet之间的关系事例说明
- Hashmap 和Hashtable的之间的差异
- mysql各个主要版本之间的差异.
- 不同linux 系统之间差异记录
- 进程、会话、连接之间的差异 .+数据库资料
- hibernate面试题 --- 类与类之间的有哪几种关系,并说明
- 火狐和IE之间的7个JavaScript差异
- 码农和程序员之间的5个关键差异