new 的一些点 的 学习

转载 2012年03月22日 10:54:27

转载:http://apps.hi.baidu.com/share/detail/46283625

new的第三种形态——placement new是用来实现定位构造的,因此可以实现new operator三步操作中的第二步,也就是在取得了一块可以容纳指定类型对象的内存后,在这块内存上构造一个对象,这有点类似于前面代码中的“p->A::A(3);”这句话,但这并不是一个标准的写法,正确的写法是使用placement new:
[Page]
#include <new.h>

void main()
{
   char s[sizeof(A)];
   A* p = (A*)s;
   new(p) A(3); //p->A::A(3);
   p->Say();
}
对头文件<new>或<new.h>的引用是必须的,这样才可以使用placement new。这里“new(p) A(3)”这种奇怪的写法便是placement new了,它实现了在指定内存地址上用指定类型的构造函数来构造一个对象的功能,后面A(3)就是对构造函数的显式调用。这里不难发现,这块指定的地址既可以是栈,又可以是堆,placement对此不加区分。但是,除非特别必要,不要直接使用placement new ,这毕竟不是用来构造对象的正式写法,只不过是new operator的一个步骤而已。使用new operator地编译器会自动生成对placement new的调用的代码,因此也会相应的生成使用delete时调用析构函数的代码。如果是像上面那样在栈上使用了placement new,则必须手工调用析构函数,这也是显式调用析构函数的唯一情况:
p->~A();
当我们觉得默认的new operator对内存的管理不能满足我们的需要,而希望自己手工的管理内存时,placement new就有用了。STL中的allocator就使用了这种方式,借助placement new来实现更灵活有效的内存管理。

关于八进制的一些点

首先,上代码: int main() { int a = 012; int b = '\012'; int c = '\0123'; return 0; } 问:变量a、b、c的值各为多少...
  • lulu_1085
  • lulu_1085
  • 2017年12月02日 20:10
  • 74

一些点

Toolbar : http://www.tuicool.com/articles/7BJBZb layout_weight:http://blog.csdn.net/yanzi122562...
  • penguin625
  • penguin625
  • 2016年11月15日 22:35
  • 107

关于Elasticsearch的一些点

基本介绍 Elasticsearch是一个开源的分布式实时搜索与分析引擎,支持云服务。它是基于Apache Lucene搜索引擎的类库创建的,提供了全文搜索能力、多语言支持、专门的查询语言、支持地理...
  • kb0714
  • kb0714
  • 2017年03月08日 19:09
  • 59

关于HashMap的一些点、、、

关于HashMap总结的一些点
  • TongFn
  • TongFn
  • 2014年12月15日 17:34
  • 464

[C]指针的一些点

#includevoid main(){ int **p1,*p2,i=3; p2=&i;p1=&p2; printf("p1=%x,p2=%d/n",p1,p2);}像这样的程序,p1是指向指针的指...
  • yxlovemoney
  • yxlovemoney
  • 2007年08月05日 20:30
  • 397

【SSLGZ 1613】最短路径问题(Floyd)

问题描述 平面上有n个点(N
  • Fallen_Angel001
  • Fallen_Angel001
  • 2016年12月06日 17:38
  • 284

网络爬虫学习笔记(二) 如何开发一个简单的爬虫

首先基本的爬虫开发,一般涉及到抓包工具的使用,比如抓取一下带有请求参数的链接,需要知道参数的字段名称等,每个字段是否加密,现在介绍一个简单的例子,抓取百度新闻。1 下载页面(使用jdk自带的下载工具包...
  • sunxing2016
  • sunxing2016
  • 2016年09月30日 12:49
  • 267

面试的一些点

今天在知乎上看到了一哥们,技术大牛吧,分享的东西,于是就记录了一下以下为正文这几天比较忙。加个插曲。 前两天面试了一个四年工作经验的Java工程师,挺失望的。工作换了四五家,大多浅尝则止,基础太差了...
  • yangrui0070
  • yangrui0070
  • 2017年06月08日 16:30
  • 291

《统计学习方法》的一些点

统计学习方法的一些点一、统计学习方法概论统计学习方法的三要素:模型、策略、算法模型模型就是所要学习的条件概率分布或决策函数。其中决策函数标识的模型为非概率模型,由条件概率表示的模型称为概率模型。策略损...
  • kamendula
  • kamendula
  • 2017年05月10日 09:06
  • 218

前端优化的一些点

1 CSS放在head中,JavaScript放在前 2 减少重排、重绘 3 减少DOM操作次数 4 使用CDN 5 合并、压缩静态资源,减少HTTP请求数量 6 前后端采用JSON通信...
  • winstar1688
  • winstar1688
  • 2015年01月25日 23:04
  • 250
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:new 的一些点 的 学习
举报原因:
原因补充:

(最多只允许输入30个字)